gpt4 book ai didi

python - 变量在 while 循环中改变值

转载 作者:行者123 更新时间:2023-11-28 17:46:00 28 4
gpt4 key购买 nike

我昨天开始用 python 编程,所以我是个新手!

我有这个功能,必须检查

  1. 如果插入的值是一个数字
  2. 如果数字不大于 31(见下面的代码)

在调试过程中,我发现了这个我不明白的错误:

  1. 我故意选择一个大于 31 的数字,例如 45
  2. 它再次提示我,我选择了一个正确的数字,例如 7
  3. 在代码中,我要求打印两次 voto 变量(在注释中我称它们为“POINT A”和“POINT B”)
  4. 在我得到的输出中:

    7

    45

我再次被要求输入不同的数字。

我不明白为什么变量在 while 循环开始后就改变了它的值。

你能用非常简单的词向我解释一下吗? (<- 请记住我是初学者!:D)

提前致谢!

def controlla_voto(voto_lett):
flag=1
while flag:
for y in voto_lett:
if (ord(y) in range(48,58))==0:
voto_lett=raw_input("Invalid charachters, try again: ")
flag=1
break
else: flag=0
voto=int(voto_lett)
print voto # POINT A
while (voto in range(32))==0:
print voto #POINT B
voto_lett=raw_input("Invalid number, try again: ")
controlla_voto(voto_lett)
return voto

最佳答案

太完美了!您只是忘记了递归调用的返回值。

def controlla_voto(voto_lett):
flag=1
while flag:
for y in voto_lett:
if (ord(y) in range(48,58))==0:
voto_lett=raw_input("Invalid charachters, try again: ")
flag=1
break
else: flag=0
voto=int(voto_lett)
print voto # POINT A
while (voto in range(32))==0:
print voto #POINT B
voto_lett=raw_input("Invalid number, try again: ")
return controlla_voto(voto_lett)
return voto

另一个解决方案是:

voto = controlla_voto(voto_lett)

但是需要一些东西来跳出 while 循环。

关于python - 变量在 while 循环中改变值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18155161/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com