将变量与“ int”进行比较无法正常工作

时间:2018-12-28 00:52:57

标签: python python-3.x types

我的程序需要用户输入一个整数,因此我试图创建一个循环,如果他们输入非整数,并且直到输入整数,该循环才结束。我尝试过:

PlayerCount = input("How many players?")
while PlayerCount != int:
    try:
        PlayerCount = int(PlayerCount)
    except ValueError:
        print("Please enter a number between 3 and 5")
        PlayerCount = input("How many players?")

但是,当输入有效输入时,循环不会继续,也不会结束,并允许程序的其余部分运行。我只是看到IDLE中的换行符和闪烁的光标。我还需要做其他事情来适当地结束while循环吗?我期望try块成功后,循环会自动结束。

6 个答案:

答案 0 :(得分:4)

执行以下操作:

PlayerCount = input("How many players?")
while True: #loop forever until `break`
    try:
        PlayerCount = int(PlayerCount)
    except ValueError:
        print("Please enter a number between 3 and 5")
        PlayerCount = input("How many players?")
    else: #no error
        break #exit loop

elsetry中未出错时运行。

答案 1 :(得分:3)

错误在while PlayerCount != int:行中。

PlayerCount != int将始终为真。您可能想做的是检查PlayerCount是否为整数类型。但是您实际上正在检查它是否等效于类int本身。请注意,实际整数与int类不同。

要检查PlayerCount是否是int类的实例,请用while not isinstance(PlayerCount, int):替换条件。

答案 2 :(得分:2)

尝试在第一行的isinstance循环中使用while,则无需修改while循环的内部:

PlayerCount = input("How many players?")
while not isinstance(PlayerCount, int):
    try:
        PlayerCount = int(PlayerCount)
    except ValueError:
        print("Please enter a number between 3 and 5")
        PlayerCount = input("How many players?")

答案 3 :(得分:0)

在您的代码中,您正在将用户输入与int 进行比较。您无需检查它是否为int的实例。而且无论如何,您已经在使用try-except块进行检查。当输入不是有效整数时,将执行except块。

只需将其更改为此:

PlayerCount = input("How many players?")
while True:
    try:
        PlayerCount = int(PlayerCount)
        break
    except ValueError:
        print("Please enter a number between 3 and 5")
        PlayerCount = input("How many players?")

如评论中所述,另一种方法是使用isinstance(PlayerCount, int),它基于bool是否是PlayerCount的实例而返回int的值。 / p>

答案 4 :(得分:0)

请雅各布指出,与int比较是不正确的。我建议有一个循环,该循环将重试直到输入3到5之间的整数:

while True:
    player_count = input('How many players (3-5)? ')
    try:
        player_count = int(player_count)
        if player_count in (3, 4, 5):
            break
    except ValueError:
        pass

几点:

  • 此方法仅包含1个input函数调用
  • 用户输入也将转换为int
  • 它检查两个条件:一个int和范围3..5

答案 5 :(得分:0)

PlayerCount = input("How many players?")
while type(PlayerCount) != int:
    try:
        PlayerCount = int(PlayerCount)
    except ValueError:
        print("Please enter a number between 3 and 5")
        PlayerCount = input("How many players?")
    else:
        pass

其他部分将在没有任何异常的情况下执行。