Python代码语法错误排查及变量相加失效问题求助
你的Python代码语法错误与变量赋值问题解析
我来帮你拆解代码里的两个核心问题,一步步解决:
一、elif语句的语法错误
你标记的SyntaxError来自两个细节问题:
- 条件表达式不完整:比如
elif points > 50 and <= 100,这里的<= 100前面没有指定要比较的变量,Python不知道你要拿什么和100对比,必须写成points > 50 and points <= 100。所有类似的elif条件都犯了这个错。 - 缺少冒号:最后一个
elif points >200 and <=300的末尾没有加冒号:,Python的条件语句(if/elif/else)结尾必须用冒号来开启后续的代码块。
二、变量相加操作未生效的原因
就算注释掉elif语句,final_discount的计算还是没效果,核心问题有两个:
- 赋值运算符用错:你给
points_discount和years_discount赋值时,用了==(比较运算符,用来判断两个值是否相等),而不是=(赋值运算符,用来给变量赋值)。比如points_discount == 0.00只是做了一次无意义的比较,根本没有把0.00赋值给变量,所以这两个变量一直是初始的0.0。 - 计算时机不对:
final_discount = points_discount + years_discount写在了所有赋值语句之前,就算后面修正了赋值,之前计算的结果也不会自动更新,得把计算语句放在所有赋值完成之后。
修正后的完整代码
# Define variables and collect inputs points = int(input("How many points do you have?: ")) years = int(input("How many years have you been a customer?: ")) points_discount = float() years_discount = float() final_discount = float() # if statements for the points if points <= 50: points_discount = 0.00 elif points > 50 and points <= 100: # 补全变量,修正赋值运算符 points_discount = 0.10 elif points > 100 and points <= 200: # 补全变量,修正赋值运算符 points_discount = 0.20 elif points > 200 and points <= 300: # 补全变量、添加冒号、修正赋值运算符 points_discount = 0.25 else: points_discount = 0.30 # if statement for the years as a customer if years < 5: years_discount = 0.00 # 修正赋值运算符 else: years_discount = 0.05 # 修正赋值运算符 # 移到所有赋值完成后再计算最终折扣 final_discount = points_discount + years_discount print(str(final_discount), " is your discount")
内容的提问来源于stack exchange,提问作者310ToPoona
相关产品推荐
相关产品推荐

