Данные списка будут рисовать только имена списка, а не фактические данные в списке - PullRequest
0 голосов
/ 13 апреля 2019

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

Например ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', ' K '] Надо читать как написано

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

Как мне сделать так, чтобы вместо этого были номера масти?

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

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)

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

Ответы [ 4 ]

1 голос
/ 13 апреля 2019

Вы используете несколько возможных решений, все неправильно. Вы можете (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'))
1 голос
/ 13 апреля 2019

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

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)
1 голос
/ 13 апреля 2019

Randint, импортированный из случайного числа, дает вам только одно единственное число, поэтому он, вероятно, печатает 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 получает номера значений в списке или строке

0 голосов
/ 13 апреля 2019

Функция 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)
...