虽然循环没有破坏

时间:2012-07-18 14:16:23

标签: python while-loop

下面是Python的一段代码,它一直困扰着我。

var=0
while (var <1 or var>100):
    var=raw_input('Enter the block number ')
    if (var >=1 and var<=100):
        print '\nBlock Number : ',var 
    else:
        print 'ERROR!!! Enter again.'

问题是while循环连续迭代而不会中断。谁能帮助我如何打破循环。

有没有办法在Python中实现 do..while

5 个答案:

答案 0 :(得分:12)

问题是raw_input返回一个字符串。你在比较一个字符串和你可以在python 2.x中做的整数(在python 3中,这种比较会引发TypeError),但结果显然总是False。为了完成这项工作,您可能需要var=int(raw_input('Enter the block number'))

之类的东西

来自documentation

  

不同类型的对象总是比较不相等,并且一致但是任意地排序。

答案 1 :(得分:4)

你不必要地检查var两次,并且你正在尝试比较int和str(因为raw_input返回一个字符串),这是行不通的。试试这个:

var=0
while True:
    var=int(raw_input('Enter the block number '))
    if (var >=1 and var<=100):
        print '\nBlock Number : ',var 
        break
    else:
        print 'ERROR!!! Enter again.'

答案 2 :(得分:1)

您应该将字符串转换为int。

var=0
while (var <1 or var>100):
    # I changed here
    var=int(raw_input('Enter the block number '))
    if (var >=1 and var<=100):
        print '\nBlock Number : ',var 
    else:
        print 'ERROR!!! Enter again.'

答案 3 :(得分:0)

您遇到的问题是字符串(由raw_input返回)总是大于整数:

>>> "25" > 100
True

您需要先将输入转换为整数:

var = int(raw_input("Enter the block number "))

当然,你会希望在输入错误的情况下保持弹性,所以你可能希望将整个事情包裹在try块中。

答案 4 :(得分:0)

你好,你需要输入“break”,var也应该是一个整数,见下文

while True:
var=int(raw_input('Enter the block number '))
if (var >=1 and var<=100):
    print '\nBlock Number : ',var
    break
else:
    print 'ERROR!!! Enter again.'
    continue

希望这会有所帮助