理想情况下,我希望能够提示用户“小”或“S”,“中”或“M”和“大”或“L”时,确定饮料的价格。这都是不区分大小写的,所以“s”或“smaLL”是好的,等等。如果我只输入一个“M”,我会得到一个超出范围的索引代码的错误,它会作为一个小的。一个大的给我一个中等的。救命啊?你知道吗
print("Ie. 'S', 'M', 'L', 'Small', 'Medium, 'Large'" +
" or any variations in their letter case sensitivity will work.")
beverageSize = str(input("Input your desired size: "))
print("")
if len(beverageSize) > 1 and len(beverageSize) < 5:
exit(print("Error with choice of beverage input."))
elif beverageSize.startswith("S") or beverageSize.startswith("s") and\
beverageSize is beverageSize.isalpha() and len(beverageSize) == 0 or len(beverageSize) == 4 or\
beverageSize[0] == "S" or beverageSize[0] == "s" and\
beverageSize[1] == "M" or beverageSize[1] == "m" or beverageSize[1] == "" and\
beverageSize[2] == "A" or beverageSize[2] == "a" or beverageSize[2] == "" and\
beverageSize[3] == "L" or beverageSize[3] == "l" or beverageSize[3] == "" and\
beverageSize[4] == "L" or beverageSize[4] == "l" or beverageSize[4] == "" and\
len(beverageSize) != 5:
beverageSize = SMALL_SIZE
print("SMALl")
elif beverageSize.startswith("M") or beverageSize.startswith("m") and\
beverageSize is beverageSize.isalpha() and\ len(beverageSize) == 0 or len(beverageSize) == 5 or \
beverageSize[0] == "M" or beverageSize[0] == "m" and\
beverageSize[1] == "E" or beverageSize[1] == "e" or beverageSize[1] == "" and\
beverageSize[2] == "D" or beverageSize[3] == "d" or beverageSize[3] == "" and\
beverageSize[3] == "I" or beverageSize[3] == "i" or beverageSize[3] == "" and\
beverageSize[4] == "U" or beverageSize[4] == "u" or beverageSize[4] == "" and\
beverageSize[5] == "M" or beverageSize[5] == "m" or beverageSize[5] == "":
beverageSize = MEDIUM_SIZE
print("MEDIUM")
在python中有更聪明的方法来测试变量的值。一个使用
if-else
条件的方法已经在注释中suggested。下面是另一个使用dict
的简短方法:它使用
dict.get
来提取与输入相关的值。如果用户输入了字典中不存在的关键字,则beverageSize
被分配值Invalid Size
。你知道吗首先,您的程序将无法工作,因为对于允许的值,这始终是正确的:
然后,让自己休息一下,避免所有的小写/大写检查,在比较东西之前只使用这个:
现在开始比较:
或者更好,使用真正的Python风格:
相关问题 更多 >
编程相关推荐