为什么这行代码不能正常工作?

时间:2015-07-24 08:54:15

标签: python python-3.x

这是我的代码中遇到麻烦的部分:

    class_number = input("Before your score is saved ,are you in class 1, 2 or 3?")
    if class_number not in (1,2,3):
        sys.exit("That is not a valid class, unfortunately your score cannot be saved, please try again")
    else:
        filename = (class_number + "txt")

但是当程序询问用户用户是什么类时,无论输入如何,程序都会退出系统。即使用户在(1,2,3)中输入 ,也会发生这种情况。

为什么不起作用?

2 个答案:

答案 0 :(得分:2)

在Python3中,<?php echo $this->pagination->create_links();?> 只返回一个字符串,所以当你调用它来获取input变量时,你得到一个字符串而不是一个int。您需要将其显式声明为int

class_number

或者,对字符串检查结果可能更安全(因为您不需要对结果执行算术运算)

class_number = int(input("Which classes scores would you like to see? Press 1 for class 1, 2 for class 2 or 3 for class 3"))

这更安全,因为前面的方法可以在一个字符串上调用if class_number not in ('1', '2', '3'): ,该字符串无法转换为数字并且会引发异常。例如,如果用户输入“3”将引发异常。如果你只是使用字符串,你就不会有这样的麻烦。

答案 1 :(得分:1)

你试过这个吗?

class_number = int(input("..."))
if class_number not in (1, 2 ,3):
    sys.exit("...")
Python 3中的

input相当于Python 2中的raw_input。它返回一个字符串。如果要将字符串与int进行比较,则必须转换其中一个。您还可以执行以下操作:

class_number = input("...")
if class_number not in ("1", "2" ,"3"):
    sys.exit("...")