Данные списка будут отображать только имена списков, а не фактические данные в списке

#python #list #random #drawing

#python #Список #Случайный #рисование

Вопрос:

Я хочу, чтобы данные моего списка считывались как его записи данных, а не как позиция, в которой они находятся в данных.

Например [‘A’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ’10’, ‘ J’, ‘Q’, ‘K’] Следует читать какговорит

Но вместо этого он считывает данные как 0, 1, 2, 3, 4, 5.

Как мне заставить его вместо этого указать suitenumbers.

Я немного поиграл с этим, пытаясь переименовать данные, чтобы создать что-то другое, но я действительно не знаю, что я здесь делаю.

 suitenumbers = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
numcards_stack6 = randint(1, 9)

for suitenumbers in range(numcards_stack6):
      pencolor('black')
      write(suitenumbers, font=("Arial", 20, 'normal', 'bold'))
      forward(50)
  

Он должен отступить
A
2
3
4
5
6
7
8

Ответ №1:

Randint, импортированный из random, дает вам только одно единственное число, поэтому он, вероятно, печатает 1 число

 suitenumbers = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
numcards_stack6 = randint(1, 9)

for suitenumbers in range(len(suitenumbers)-3):
      pencolor('black')
      write(suitenumbers, font=("Arial", 20, 'normal', 'bold'))
      forward(50)
  

len получает номера значений в списке или строке

Ответ №2:

Когда вы пишете

 for suitenumbers in range(numcards_stack6):
  

вы перезаписываете suitenumbers переменную, устанавливая для нее значения в диапазоне при циклическом просмотре. Вы должны присвоить номер другой переменной, например i , и использовать его для индексации в вашем suitenumbers списке:

 for i in range(numcards_stack6):
      pencolor('black')
      write(suitenumbers[i], font=("Arial", 20, 'normal', 'bold'))
      forward(50)
  

Ответ №3:

Вы неправильно используете несколько возможных решений. Вы можете либо (1) выполнить цикл, как вы делали, где iterable представляет индекс, либо (2) использовать нотацию среза, чтобы ограничить весь ваш список:

1-е решение:

 for i in range(numcards_stack6): #notice that I changed variable to i from suitenumbers, since you're using suitenumbers as name of list
    pencolor('black')
    write(suitenumbers[i], font=("Arial", 20, 'normal', 'bold'))
  

2-е решение:

 for number in suitenumbers[:numcards_stack6]:
    pencolor('black')
    write(number, font=("Arial", 20, 'normal', 'bold'))
  

Ответ №4:

Функция range(x) создает элемент с номерами от 0 до определенного вами числа: пример: Если numcards_stack6 равно 4, то range(4) выполняет итерацию по [0,1,2,3] . Поэтому всякий раз, когда вы собираетесь печатать переменную, которую вы повторяете в диапазоне, она всегда будет печатать номер итерации, в которой вы находитесь, поэтому вам нужно использовать suitenumbers[iter]

Кроме того, когда вы используете for , вы повторяете новую переменную над тем, что хотите повторить. То, что вы делаете, это переписываете переменную suitenumbers, которая неверна.

 for iter in range(numcards_stack6):
      pencolor('black')
      write(suitenumbers[iter], font=("Arial", 20, 'normal', 'bold'))
      forward(50)