用户被要求输入a、b、c和n。n必须大于2,所以我在checkn()中进行检查。做这件事可能有一个简单得多的方法;如果有,请告诉我!在
回溯显示“错误:未定义名称‘n’”。我假设我对局部变量和全局变量有些困惑,但我不确定如何避免我的这个错误。在
我误解了什么?在
这是我的代码:
import math
def fermat():
if (a**n) + (b**n) == (c**n):
print('Holy smokes, Fermat was wrong!')
else:
print("No, that doesn't work")
def checkn():
print('insert n, must be greater than 2')
n = int(input())
if n <= 2:
print('n must be greater than 2')
checkn()
else:
fermat()
a = int(input('input a\n'))
b = int(input('input b\n'))
c = int(input('input c\n'))
checkn()
是的。您正试图将本地作用域的
n
变量访问到checkn
函数。解决这个问题最简单的方法是让fermat
函数接受一个参数,然后在checkn
函数中,将n
传递给fermat
。在定义
fermat
以获取参数:我将参数改为
x
,只是为了帮助隔离n
变量不相同的事实。您正在将值传递给函数。在在
^{pr2}$checkn
函数中,将n
传递给fermat
(仅显示相关部分):只是为了完成添加。(通过重新构造代码,不必向函数调用传递任何变量)
相关问题 更多 >
编程相关推荐