寻找用户输入的一部分是否可以在整数范围内

时间:2018-07-05 20:18:09

标签: python-3.x

我刚接触Python, 我正在尝试检查是否可以在整数范围内检查用户输入 以下是我已经编写的代码

#LL DD LLL
#where L is a letter
#where D is a digit
#eg SG 61 ABC

area_codes = ["SG", "PV", "LJ", "EX"]

reg = input("Enter registration: ")
if reg[0:2] in area_codes:
    print(reg[0:2])
    if reg[2:3] in range(0,18):
            print(reg[2:3])
    else:
        print("nope")

这是我得到的答复,

Enter registration: SG15
SG
nope

如何正确检查? 我已经尝试了一些方法,但是我什至不知道这是否可能。

预先感谢您, Donberry。

2 个答案:

答案 0 :(得分:1)

reg[2:3]是您的输入字符串的一部分。所以它是一个数字,但存储为字符串。

当您这样做:

if reg[2:3] in range(0,18):

您正在检查{<1}}对象(python 3)或range对象(python 2)中包含 integers 的字符串。因此,每次测试都会失败。

你做完了

list

您会在python 3中遇到显式错误。此外,它避免为了测试而构建if 0 <= reg[2:3] < 18: range对象。这样的链式比较会更快。

所以我建议:

list

答案 1 :(得分:0)

在检查字符串是否在范围内之前,应将其转换为整数。另外,(而且我不知道您是否这样做),但是您应该验证您想要的数字在0到17之间,这就是您的代码所要做的。

也就是说,range(0, 18)-相当于range(18)-生成从0开始到17结束的数字列表,包括0和17。

无论如何,您将像这样检查它:

if int(reg[2:3]) in range(0,18):
        print(reg[2:3])