Python报SyntaxError: 'return' outside function错误如何解决
代码问题修复说明
你当前运行抛出的SyntaxError: 'return' outside function报错,核心原因是return关键字仅能在函数定义内部使用,你在全局作用域直接写return语句,不符合Python语法规则。
除此之外你的代码还存在多处会导致运行异常/逻辑错误的问题,逐一列示:
- 模块导入位置错误:
import random写在while循环内部,每次循环都会重复执行导入操作,属于冗余写法,应放在代码开头位置 - 随机数方法名错误:random模块生成区间整数的方法为
random.randint(最小值, 最大值),你写的random.int()是不存在的方法,运行时会触发属性错误 - 变量拼写错误:计数累加时你写的是
gueses = gueses +1,和初始化定义的变量名guesses不一致,少写了一个s,运行时会触发变量未定义错误 - 循环逻辑错误:
- 第一次进入while循环做判断时,
compnum还没有被赋值,直接做相等判断会触发变量未定义错误 - 你写的分支逻辑是只要电脑没猜对就执行
return,完全起不到循环猜数的作用
- 第一次进入while循环做判断时,
- 输入校验逻辑漏洞:现有逻辑最多校验两次输入,如果用户第二次还是输入超出1-10范围的数字,程序不会终止,会继续往下执行猜数流程,和你写的提示语预期不符
修正后可直接运行的代码
import random guesses = 0 # 循环校验输入,直到拿到合法范围的数字再进入猜数环节 while True: usernum = int(input("pick a number between 1 and 10")) if 1 <= usernum <= 10: break guesses += 1 if guesses >= 2: print("You failed... again. wow thats sad just restart the program") exit() print("That number is bigger than 10 or smaller than 1. Try again") print("okay now i will find what your number is...") compnum = 0 # 未猜对时持续循环生成随机数 while compnum != usernum: compnum = random.randint(1, 10) guesses += 1 # 猜对后输出结果 print(f"Found your number! It's {compnum}, I took {guesses} guesses in total.")
内容的提问来源于stack exchange,提问作者PLEEEF
相关产品推荐
相关产品推荐

