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

标签 python while-loop

我昨天开始用 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/

相关文章:

python - Python 无法正确识别字符串长度?

python - 如何在 Flask 中提供临时下载地址?

php/mysql 数组或带有某些值的查询

python - 为 python : "no module named ' hdbscan'"error 安装 hdbscan 包时出现问题

python - pygame矩形碰撞小于图像

java - 在 Java 中使用 SWIG 类型映射

java - while循环编码模式

VBA 转到下一个过滤的单元格

c++ - 嵌套 while 循环中的范围变量

python - python中的猜谜游戏