我正在尝试创建一个不区分大小写的用户输入选项。但我认为应该是正确的是不起作用。这是相关的代码片段:
while True:
search = raw_input("Choose search A or B: ")
search = search.lower()
if search != {'A','B'}:
print "That was not a valid choice."
else:
if search == 'A':
searchAfunction()
if search == 'B':
searchBfunction()
else:
print "Search again."
我希望用户能够输入' a'或者' A'。 目前,这是我唯一可行的解决方案。它看起来不像Pythonic?:
while True:
search = raw_input("Choose search A or B: ")
if search != {'A','a','B','b'}:
print "That was not a valid choice."
else:
if search in {'A','a'}:
searchAfunction()
if search in {'B','b'}:
searchBfunction()
else:
print "Search again."
当我包含search = search.lower()时,我只是陷入"再次搜索"的循环中。 (在完整程序中,这允许用户在完成搜索后选择通过A或B再次搜索)。有什么想法吗?
答案 0 :(得分:3)
两个问题:
1)而不是
if search != {'A','B'}:
...使用
if search not in {'A', 'B'}:
!=运算符仅用于比较,而不用于集合成员资格。
2)使用search.upper()
代替search.lower()
(或者,在代码的其余部分使用'a'
代替'A'
...)
答案 1 :(得分:1)
你有两个问题:
首先,您使用str.lower
将输入转换为小写,然后尝试与if
语句中的大写字符进行比较。
其次,search != {'A', 'B'}
应该是search not in {'A', 'B'}
。
将两者放在一起,即可获得if search not in {'a', 'b'}