下面是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 ?
答案 0 :(得分:12)
问题是raw_input
返回一个字符串。你在比较一个字符串和你可以在python 2.x中做的整数(在python 3中,这种比较会引发TypeError
),但结果显然总是False
。为了完成这项工作,您可能需要var=int(raw_input('Enter the block number'))
不同类型的对象总是比较不相等,并且一致但是任意地排序。
答案 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
希望这会有所帮助