#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)