首页 > 解决方案 > python for循环不会改变值

问题描述

所以我是python的新手,这个问题对这里的任何人来说都应该是相当容易的,除了我很明显哈哈,所以这是我的代码

for c in range(0,20):
    print("number",c+1)
    number = input ("Enter number:\n")
    number = int(number)
    if (number < 1 or number > 9):
        print("try again by inputing a positive number < 10")
        c -=1

所以你可能会想,如果有人输入的数字大于 9 或小于 0,我只想让我的 c 保持在原位,所以我从 1-9 中得到 20 个正数,但它并没有这样做,而且它一直在增加,即使我有 c-=1 的东西在那里

标签: pythonfor-loop

解决方案


首先,不要使用 range(0,20) 而是使用 range(20) 。

其次,范围返回一个迭代器。这意味着,当您执行 c-=1 时,您不会返回迭代器,而是减少迭代器返回的数字。这意味着如果 c=5 并且您在 input 中输入的数字是 20,c 将变为 4,但是当返回到循环的开头时,c 将变为 6。

你可能想要这样的东西:

c = 0
while c < 20:
    print("number",c+1)
    number = input ("Enter number:\n")
    number = int(number)
    if (number < 1 or number > 9):
        print("try again by inputing a positive number < 10")
        continue
    c += 1

推荐阅读