Python 在while循环中更改全局变量时出现问题
我试图算出条形码的最后一个数字,但是第二个和最后一个while循环有问题 它们不会为变量Python 在while循环中更改全局变量时出现问题,python,python-3.x,global,Python,Python 3.x,Global,我试图算出条形码的最后一个数字,但是第二个和最后一个while循环有问题 它们不会为变量total或mOf10分配任何新值。而是将它们保留为0,我不明白为什么 while True: number = input("Enter a 7 digit number please.") if len(number) == 7: try: number = int(number) except ValueError:
total
或mOf10
分配任何新值。而是将它们保留为0,我不明白为什么
while True:
number = input("Enter a 7 digit number please.")
if len(number) == 7:
try:
number = int(number)
except ValueError:
print("Please enter a number")
else:
break
else:
print("Please enter a valid number.")
print(number) #DELETE THIS BIT LATER!
i = 0
total = 0
while (i < 7 == True):
global total
f = str(number)[i]
if int(f) % 2 == 1:
total = total + int(f) * 3
else:
total = total + int(f)
i += 1
print(total)
mOf10 = 0
while True:
global mOf10
if mOf10 >= total:
break
else:
mOf10 += 10
finalD = mOf10 - total
print(finalD)
为True时:
数字=输入(“请输入一个7位数字。”)
如果len(number)==7:
尝试:
数字=整数(数字)
除值错误外:
打印(“请输入一个数字”)
其他:
打破
其他:
打印(“请输入有效数字”)
打印(数字)#稍后删除此位!
i=0
总数=0
而(i<7==True):
全球总数
f=str(编号)[i]
如果int(f)%2==1:
总计=总计+整数(f)*3
其他:
总计=总计+整数(f)
i+=1
打印(总计)
mOf10=0
尽管如此:
全球mOf10
如果mOf10>=总计:
打破
其他:
mOf10+=10
最终值=mOf10-总计
打印(最终)
它会打印出你输入的7位数,但不会输出10的总和或倍数。结果是0
我的老师唯一的解决办法是使用大量的if/else语句。我不确定您在这里到底想做什么,但我可以告诉您,对于什么问题,
total
的值没有改变。这里的问题是while
循环的条件。即,while(i<7==True)
由于运算符的链接,整个条件依次变为i<7和7==True
。由于7==True
是False
,因此最终条件的计算结果为False
,比较的优先级相同。
a您不需要在while循环中使用global,除非它是一个函数total
这里不是一个全局变量。它与main在同一范围内,也不是mOf10
如果您删除行global total
和global mOf10
,这将为您提供所需的输出My friendi甚至更好,将i=0替换为i<7,i++
构造为范围(7)
中的i更具pythonic code>。是的,这更好。只是在这里指出OP的问题。是的,评论更多的是针对OP而不是你!很高兴能帮上忙,作为回报,我学到了一些东西。我也刚刚了解到有这样的怪癖。我猜这是因为优先权扮演了一个角色。将在一段时间内用更深入的解释更新答案。@SleepingSoul,请检查编辑以获得完整的解释。
>>> i<7
True
>>> i<7 == True
False
>>> i < 7
True
>>> 7 == True
False