无法使用“ for”循环分配文字

时间:2018-08-06 14:52:14

标签: python

我正在用Python创建Yahtzee程序。此功能旨在执行用户选择的操作(用户输入数字,然后选择适当的列表项)。我刚刚进入有关添加一个数字集的总和的部分(Yahtzee卡的顶部带有一个,两个等)。我进行了一个循环,为列表1(随机掷出的“掷骰子”数字列表;在程序中已声明)中找到的每个dicevalues的得分加了一个。

我在for 1 in dicevalues:行上看到错误。它说SyntaxError: cannot assign to literal。我查找了此错误,但没有任何意义。我在这里解释的是,程序将为for中的每个值1dicevalues块中运行代码,但是我不确定是否可以使用{{1 }}以这种方式循环。

for

是否由于某些原因def choiceAction(): if options[choice] == "Chance (score total of dice).": global score score += (a + b + c + d + e) if options[choice] == "YAHTZEE!": score += 50 if options[choice] == "Large straight": score += 40 if options[choice] == "Small straight.": score += 30 if options[choice] == "Four of a kind (total dice score).": score += (a + b + c + d + e) if options[choice] == "Three of a kind (total dice score).": score += (a + b + c + d + e) if options[choice] == "Full house.": score += 25 if options[choice] == "Add all ones.": for 1 in dicevalues: # <-- SyntaxError: can't assign to literal score += 1 不能出现在1声明中?

2 个答案:

答案 0 :(得分:2)

如果您不想使用dicevalues中的项目,则可以使用占位符

for _ in dicevalues:

答案 1 :(得分:1)

错误

在编写for x in dicevalues:时,您要遍历dicevalues并将每个元素放入变量x中,因此x不能用1代替。这就是为什么出现错误SyntaxError: can't assign to literal的原因。

解决方案

以下是执行所需内容的几种解决方案:

dicevalues = [2, 1, 3, 6, 4 ,1, 2, 1, 6]

# 1. Classic 'for' loop to iterate over dicevalues and check if element is equal to 1
score = 0
for i in dicevalues:
    if i == 1:
        score += 1
print(score) # 3

# 2. Comprehension to get only the elements equal to 1 in dicevalues, and sum them
score = 0
score += sum(i for i in dicevalues if i == 1)
print(score) # 3

# 3. The 'count()' method to count the number of elements equal to 1 in dicevalues
score = 0
score += dicevalues.count(1)
print(score) # 3