用于校验星级评分的Python循环出现语法错误是什么原因?
错误排查及代码修正
已发现的语法错误
- 第7行
rating = float(input("Enter a star rating or a negative number to quit: ")缺少闭合括号,应在末尾补充1个右括号,修正为rating = float(input("Enter a star rating or a negative number to quit: ")) - 第14行
else: (numOfStars<0):语法规则错误:else后不能直接附加判断条件,需要走带判断的分支应使用elif,如果负数是最后一种剩余情况也可以直接删掉后面的判断表达式,修正为elif numOfStars < 0:或者直接else:
其他会导致运行报错/功能不生效的问题
- 你要实现循环输入的逻辑,但当前代码完全没有循环结构(比如
while循环),函数只会执行一次就结束,无法反复接收用户输入 - 只声明了
numOfStars为全局变量,代码中用到的rating、count、lowestRating、maxRating均未做初始化或者全局声明,运行时会直接报「变量未定义」错误 - 分支判断逻辑顺序不合理,应该优先判断用户是否输入了负数要退出,再判断输入是否在有效评分区间,最后再处理超出范围的情况,否则会出现逻辑判断错乱
修正后参考代码
# 提前初始化全局变量 lowestRating = 0 maxRating = 4 rating = 0.0 count = 0 def detailLoop(): global numOfStars, rating, count, lowestRating, maxRating # 加while循环实现重复输入 while True: numOfStars = float(input("Enter a star rating or a negative number to quit: ")) # 优先判断是否退出 if numOfStars < 0: print("End of Program") break # 再判断是否在有效区间 elif lowestRating <= numOfStars <= maxRating: rating += numOfStars count += 1 # 剩下的就是超出范围的情况 else: print("Out of range. ") return # 调用函数运行 detailLoop()
内容的提问来源于stack exchange,提问作者ProbablyConfused
相关产品推荐
相关产品推荐

