变量在while cy内改变值

2024-09-27 19:30:08 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有这个功能,必须检查

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

在调试过程中,我发现了一个我不理解的错误:

  1. 我故意选择一个大于31的数字,例如45
  2. 它再次提示我,我选择了一个正确的数字,例如7
  3. 在代码中,我要求打印voto变量两次(在注释中我称它们为“pointa”和“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

Tags: 代码ininputrawrange数字pointflag
1条回答
网友
1楼 · 发布于 2024-09-27 19:30:08

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

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

另一种解决方案是:

^{pr2}$

但是需要一些东西来打破while循环。在

相关问题 更多 >

    热门问题