列表数据只会绘制列表名称,不会绘制列表中的实际数据

List data will only draw the list names, not the actual data in the list

我希望我的列表数据被读取为它的数据条目,而不是它在数据中的位置。

例如 ['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

从随机导入的 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 获取列表或字符串中值的个数

函数 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)

写的时候

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) 像 iterable 代表索引那样循环遍历一个循环,或者 (2) 使用切片表示法来限制整个列表:

第一个解决方案:

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

第二种解法:

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