Python 为什么这个函数返回0而不是随机数
基本上,我试图创建一个上下楼层的函数,因为它从1-6中选择一个随机数。但是,它返回一组0,而不是一组随机数。这个过程一直持续到第一百层 我已经尝试过将“f”变量的定义移动到不同的位置,看看这是否有效,并且尝试改变它计算是否向上或向下移动地板的方式Python 为什么这个函数返回0而不是随机数,python,Python,基本上,我试图创建一个上下楼层的函数,因为它从1-6中选择一个随机数。但是,它返回一组0,而不是一组随机数。这个过程一直持续到第一百层 我已经尝试过将“f”变量的定义移动到不同的位置,看看这是否有效,并且尝试改变它计算是否向上或向下移动地板的方式 def roll(): f=0 arry = [] count = 0 while count is not 100: numb = randint(1,6) if numb is 1 or 2: f-1 eli
def roll():
f=0
arry = []
count = 0
while count is not 100:
numb = randint(1,6)
if numb is 1 or 2:
f-1
elif numb is 3 or 4 or 5:
f+1
else:
f + randint(1,6)
count=count+1
arry.append(f)
return arry
实际结果应该是一系列随机数,但我得到的是一堆0。您永远不会修改
f
。不过,您的代码还有许多其他问题
def roll():
f=0
arry=[]
计数=0
当计数不是100时:
numb=randint(1,6)
如果numb为1或2:#这将始终为真
f-=1
如果numb为3、4或5:
f+=1
其他:
f+=randint(1,6)
计数=计数+1
arry.append(f)
回程
def roll():
f=0
arry=[]
计数=0
当计数不是100时:
numb=randint(1,6)
如果在(1,2)中麻木:
f-=1
elif numb in(3,4,5):
f+=1
其他:
f+=randint(1,6)
计数=计数+1
arry.append(f)
回程
您的问题是您从未将新值分配给f
写入
f+1
或f-1
不会更改f
的值,而是返回一个新值,该值等于f
的值加上或减去1。你应该写的是:
f=f+1
f=f-1
为了得到你想要的结果 原因是您执行了这些操作
f-1
f+1
f + randint(1,6)
相反,你应该这样做
f= f-1
f= f+1
f= f + randint(1,6)
所以函数应该是
def roll():
f=0
arry = []
count = 0
while count is not 100:
numb = randint(1,6)
if numb is 1 or 2:
f=f-1
elif numb is 3 or 4 or 5:
f=f+1
else:
f=f + randint(1,6)
count=count+1
arry.append(f)
return arry
希望它有帮助为什么会得到一个零数组的简短答案是,每次通过循环时,都会附加
f
的值,这在代码中永远不会改变。它在早期初始化为0,但从未更改。你会想写的
f -= 1
及
及
然而,还有一些错误需要纠正,这对于初学者来说是很常见的。例如,您写道:
if numb is 1 or 2:
这将始终是True
,因为在Python中,这与:
if (numb is 1) or 2:
你应该写:
if numb == 1 or numb == 2:
甚至:
if numb in (1, 2):
对下一个条件执行相同的操作,例如:
if numb in (3, 4, 5):
x = 294
print(x is 294)
另外,在处理数字时要避免不是,并使用=代码>取而代之
这将使您非常接近所要查找的内容。您的代码应该如下所示。。。问题已经解释过了
import random
def roll():
f=0
arry = []
count = 0
while count is not 100:
numb = random.randint(1,6)
if numb == 1 or numb == 2:
f -= 1
elif numb == 3 or numb == 4 or numb == 5:
f += 1
else:
f = f + random.randint(1,6)
count += 1
arry.append(f)
return arry
roll = roll()
print(roll)
其他人已经解释了为什么它不能按预期工作,我想用
while count is not 100:
这里不是最好的主意,从技术上讲它是可行的,但是是不应该用于整数值比较的,例如:
if numb in (3, 4, 5):
x = 294
print(x is 294)
将产生False
,因此要检查数字是否相同,应使用=
运算符并检查是否不相等=代码>运算符,因此在您的情况下,while
应为:
while count != 100:
很棒的阅读:我也会在计数时使用。如果计数不为n,则循环不会中断,如果计数为256,则循环不会中断。为什么?或者只是我的机器。。