Python 当循环不中断时
下面是Python中的一段代码,它困扰了我一段时间Python 当循环不中断时,python,while-loop,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.' var=0 而(var 100
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.'
var=0
而(var 100):
var=原始输入('输入块编号')
如果(var>=1和var,问题在于raw\u input
返回一个字符串。您正在将字符串与一个整数进行比较,这在python 2.x中是可以实现的(在python 3中,这种比较会引发TypeError
),但结果显然总是False
。要实现这一点,您可能需要类似var=int(原始输入('Enter the block number'))
从:
不同类型的对象总是比较不相等,并且顺序一致但任意
问题是,raw\u input
返回一个字符串。您将字符串与一个整数进行比较,这可以在python 2.x中实现(在python 3中,这种比较会引发TypeError
),但结果显然总是False
。要实现这一点,您可能需要类似var=int(raw\u input)的东西(“输入区块编号”)
从:
不同类型的对象总是比较不相等,并且顺序一致但任意
您不必要地检查了两次var,并且尝试比较int和str(因为原始输入返回一个字符串),这不正确。请尝试以下操作:
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.'
var=0
尽管如此:
var=int(原始输入(“输入块号”)
如果(var>=1和var您不必要地检查了var两次,并且您试图比较int和str(因为原始输入返回一个字符串),这是不正确的。请尝试以下操作:
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.'
var=0
尽管如此:
var=int(原始输入(“输入块号”)
如果(var>=1且var,则应将字符串转换为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.'
var=0
而(var 100):
#我在这里换的
var=int(原始输入(“输入块号”)
如果(var>=1且var,则应将字符串转换为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.'
var=0
而(var 100):
#我在这里换的
var=int(原始输入(“输入块号”)
如果(var>=1且var遇到字符串(由raw\u input
返回)总是大于整数的问题:
>>> "25" > 100
True
您需要先将输入转换为整数:
var = int(raw_input("Enter the block number "))
当然,面对糟糕的输入,您需要有弹性,因此您可能需要将整个过程包装在一个try
块中。您遇到了一个问题,即字符串(由原始输入返回)总是大于整数:
>>> "25" > 100
True
您需要先将输入转换为整数:
var = int(raw_input("Enter the block number "))
当然,面对糟糕的输入,您需要有弹性,因此您可能需要将整个过程包装在try
块中。您好,您需要输入“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
为True时:
var=int(原始输入(“输入块号”)
如果(var>=1和var您好,您需要输入“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
为True时:
var=int(原始输入(“输入块号”)
如果(var>=1和varint
s始终小于str
s@ColinDunklau--这是真的吗?还是CPython实现的细节?唯一重要的是对象的顺序是一致的。@mgilson很好的一点,我相信这取决于实现。IIRC,它只与python 2.x中的一样,如好的。@ColinDunklau——仅在python2.x中才是正确的。我更新了我的答案,说它在pytho3中是非法的(并引发了一个TypeError
)int
s始终小于str
s@ColinDunklau--这是真的吗?还是一个CPython实现细节?唯一重要的是对象的顺序是一致的。@mgilson好的一点,我相信这取决于实现。IIRC,这在python 2.x中也是如此。@ColinDunklau——仅在python2.x中有一点很好。我更新了我的答案,说它在Python3中是非法的(并引发了TypeError
)