Int 对象不可迭代,但我正在使用范围函数
Int object is not iterable, but I am using range function
我正在做 Monty Hall 模拟,当我 运行 这些代码行时,我收到错误消息 "int object is not iterable",但我已经在使用范围函数。后来我在一个更简单的代码上尝试了它,它基本上做同样的事情并且运行顺利。
def run_game(n):
loss, win=0
for i in range(1,n):
switch(True)
if nagrada==odabir_vrata:
win+=1
else:
loss+=1
vjerojatnost_dobitka=100*win/(win+loss)
return vjerojatnost_dobitka
run_game(100)
TypeError Traceback (most recent call last)
<ipython-input-10-829dad26acc9> in <module>
10 return vjerojatnost_dobitka
11
---> 12 run_game(100)
<ipython-input-10-829dad26acc9> in run_game(n)
1 def run_game(n):
----> 2 loss, win=0
3 for i in range(1,n):
4 switch(True)
5 if nagrada==odabir_vrata:
TypeError: 'int' object is not iterable
Python 中没有 switch 语句这样的东西,所以整个语法是不正确的。
您打算写 loss, win = 0, 0
或 loss = win = 0
。
使用您的代码:
loss, win = 0
Python 尝试解压右侧的内容,因此它尝试对其进行迭代以获得两个值以分配给 loss
和 win
。但是你那里有一个 int
,所以它不能迭代它。
这将适用于 loss, win = 0, 0
,因为您在右边有一个长度为 2 的元组。
此外,loss = win = 0
(称为链式赋值)在您的值不可变的情况下等效于:
loss = 0
win = 0
请注意,正如@chepner 在评论中指出的那样,如果您有一个可变对象,使用此语法可能会导致意想不到的效果,因为 a
和 b
都引用同一个对象:
a = b = []
a.append(1)
print(b)
# [1]
所以,在这种情况下(一般来说,如果你想安全起见),你可以在每一行写一个作业:
a = []
b = []
loss = win = 0
或
loss, win = 0, 0
或
loss = 0
win = 0
我正在做 Monty Hall 模拟,当我 运行 这些代码行时,我收到错误消息 "int object is not iterable",但我已经在使用范围函数。后来我在一个更简单的代码上尝试了它,它基本上做同样的事情并且运行顺利。
def run_game(n):
loss, win=0
for i in range(1,n):
switch(True)
if nagrada==odabir_vrata:
win+=1
else:
loss+=1
vjerojatnost_dobitka=100*win/(win+loss)
return vjerojatnost_dobitka
run_game(100)
TypeError Traceback (most recent call last)
<ipython-input-10-829dad26acc9> in <module>
10 return vjerojatnost_dobitka
11
---> 12 run_game(100)
<ipython-input-10-829dad26acc9> in run_game(n)
1 def run_game(n):
----> 2 loss, win=0
3 for i in range(1,n):
4 switch(True)
5 if nagrada==odabir_vrata:
TypeError: 'int' object is not iterable
Python 中没有 switch 语句这样的东西,所以整个语法是不正确的。
您打算写 loss, win = 0, 0
或 loss = win = 0
。
使用您的代码:
loss, win = 0
Python 尝试解压右侧的内容,因此它尝试对其进行迭代以获得两个值以分配给 loss
和 win
。但是你那里有一个 int
,所以它不能迭代它。
这将适用于 loss, win = 0, 0
,因为您在右边有一个长度为 2 的元组。
此外,loss = win = 0
(称为链式赋值)在您的值不可变的情况下等效于:
loss = 0
win = 0
请注意,正如@chepner 在评论中指出的那样,如果您有一个可变对象,使用此语法可能会导致意想不到的效果,因为 a
和 b
都引用同一个对象:
a = b = []
a.append(1)
print(b)
# [1]
所以,在这种情况下(一般来说,如果你想安全起见),你可以在每一行写一个作业:
a = []
b = []
loss = win = 0
或
loss, win = 0, 0
或
loss = 0
win = 0