为什么Python代码执行加法运算后结果始终输出0?
问题原因
- 字符串比较运算符使用错误:Python 中
is用于判断两个变量是否指向同一块内存地址,要判断字符串内容是否相等需要使用==运算符。你输入得到的CCode和判断条件里的str("C1")虽然内容完全一致,但属于不同的字符串对象,因此所有if判断结果都是False,TotalPrice始终没有被修改,输出就是初始的0.0。 - 代码缩进不规范:你提供的代码中
while循环、后续的if判断语句、最终打印语句的缩进层级,和前面的变量定义层级不匹配,实际运行会直接抛出缩进错误。
修复后的代码
HomeStartCodes = ["C1", "C2", "C3", "C4", "C5"] HomeStartPrice = [1.5, 3.0, 4.5, 6.0, 8.0] TotalPrice = 0.0 while True: CCode = str(input("Please enter the first code of your journey ")) if (CCode not in HomeStartCodes): print("Invalid, please enter C1. C2, C3, C4 or C5") continue else: break # 把所有is替换成== if CCode == "C1": TotalPrice = TotalPrice + HomeStartPrice[0] if CCode == "C2": TotalPrice = TotalPrice + HomeStartPrice[1] if CCode == "C3": TotalPrice = TotalPrice + HomeStartPrice[2] if CCode == "C4": TotalPrice = TotalPrice + HomeStartPrice[3] if CCode == "C5": TotalPrice = TotalPrice + HomeStartPrice[4] print (TotalPrice)
更简洁的优化写法
不需要写多分支if判断,直接通过下标匹配取值即可:
HomeStartCodes = ["C1", "C2", "C3", "C4", "C5"] HomeStartPrice = [1.5, 3.0, 4.5, 6.0, 8.0] TotalPrice = 0.0 while True: CCode = input("Please enter the first code of your journey ") if CCode not in HomeStartCodes: print("Invalid, please enter C1, C2, C3, C4 or C5") continue break # 直接取下标找对应价格 index = HomeStartCodes.index(CCode) TotalPrice += HomeStartPrice[index] print(TotalPrice)
内容的提问来源于stack exchange,提问作者Ali Hosam
相关产品推荐
相关产品推荐

