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

下面是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=原始输入('输入块编号')

如果(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和var
int
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