提问人:Guner Mehmed 提问时间:9/7/2023 最后编辑:Guner Mehmed 更新时间:9/7/2023 访问量:47
.lower() 方法用于输入返回布尔值为 False?[复制]
.lower() method used whith input return boolean as False? [duplicate]
问:
我的 ptoblem 使用 lower() 方法,它不会以小写形式转换输入,如果我输入小写的城市名称,它会在调试中将其显示为 False。不知道我的错误在哪里:/
city = input().lower()
s = float(input("Volume sells: "))
result = 0
if city == "London":
if 0 <= s <= 500:
result = s * 0.05
elif 500 < s <= 1000:
result = s * 0.07
elif 1000 < s <= 10000:
result = s * 0.08
elif s > 10000:
result = s * 0.12
if city == "Kiev":
if 0 <= s <= 500:
result = s * 0.045
elif 500 < s <= 1000:
result = s * 0.075
elif 1000 < s <= 10000:
result = s * 0.1
elif s > 10000:
result = s * 0.13
elif city == "Sofia":
if 0 <= s <= 500:
result = s * 0.055
elif 500 < s <= 1000:
result = s * 0.08
elif 1000 < s <= 10000:
result = s * 0.12
elif s > 10000:
result = s * 0.145
else:
result = 'Error'
if type(result) == str or s < 0:
print(result)
else:
print("{0:.2f}".format(result))
答:
0赞
Sash Sinha
9/7/2023
#1
您在输入上调用 str.lower(),
然后将其与大写的城市名称进行比较。更改条件以使用小写城市名称:
取代:
if city == "London":
...
if city == "Kiev":
...
elif city == "Sofia":
跟:
if city == "london":
...
if city == "kiev":
...
elif city == "sofia":
这应该可以解决您的直接问题。或者,您可以改用 str.casefold()
进行不区分大小写的字符串比较。
评论
0赞
Andj
9/9/2023
从技术上讲,不区分大小写的字符串比较,Unicode 规范所指的默认无写匹配要求两边都大小写折叠,即如果 X.casefold() == Y.casefold(),X 是 Y 的无大小写(不区分大小写)匹配。仅将输入折叠起来不会给出不区分大小写的比较
评论