我正在用Python创建Yahtzee程序。此功能旨在执行用户选择的操作(用户输入数字,然后选择适当的列表项)。我刚刚进入有关添加一个数字集的总和的部分(Yahtzee卡的顶部带有一个,两个等)。我进行了一个循环,为列表1
(随机掷出的“掷骰子”数字列表;在程序中已声明)中找到的每个dicevalues
的得分加了一个。
我在for 1 in dicevalues:
行上看到错误。它说SyntaxError: cannot assign to literal
。我查找了此错误,但没有任何意义。我在这里解释的是,程序将为for
中的每个值1
在dicevalues
块中运行代码,但是我不确定是否可以使用{{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
声明中?
答案 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