我刚接触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。
答案 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])