Python 新手:测试fermat';简单用户输入(a,b,c,n)的s定理,以及该定理是否成立的if/else语句?
在编程的第一周,我是一个完全的新手(辞去工作,开始自学课程),我被《思考Python:如何像计算机科学家一样思考》一书中的一个问题困住了,这本书只是关于测试fermat的最后一个定理。以下是练习: 练习3 费马的最后一个定理说,不存在正整数a、b和c,因此对于n大于2的任何值,+bn=cn 编写一个名为check_fermat的函数,它接受四个参数a、b、c和n,并检查fermat定理是否成立。如果n大于2,结果是真的 an+bn=cn 程序应该打印“天哪,费马错了!”否则程序应该打印“不,那不行。” 编写一个函数,提示用户输入a、b、c和n的值,将它们转换为整数,并使用check_fermat检查它们是否违反fermat定理 这是我目前的代码:Python 新手:测试fermat';简单用户输入(a,b,c,n)的s定理,以及该定理是否成立的if/else语句?,python,Python,在编程的第一周,我是一个完全的新手(辞去工作,开始自学课程),我被《思考Python:如何像计算机科学家一样思考》一书中的一个问题困住了,这本书只是关于测试fermat的最后一个定理。以下是练习: 练习3 费马的最后一个定理说,不存在正整数a、b和c,因此对于n大于2的任何值,+bn=cn 编写一个名为check_fermat的函数,它接受四个参数a、b、c和n,并检查fermat定理是否成立。如果n大于2,结果是真的 an+bn=cn 程序应该打印“天哪,费马错了!”否则程序应该打印“不,那不
#user input is going to define the variables
def a():
print raw_input("Please enter the value for 'a': ")
def b():
print raw_input("Please enter the value for 'b': ")
def c():
print raw_input("Please enter the value for 'c': ")
def n():
print raw_input("Please enter the value for 'n': ")
#create function to check the theorem
def fermat_theorem_check(a,b,c,n):
if (a**n) + (b**n) == (c**2):
print "Holy Crap! Fermat was wrong!"
else:
print "Fermat is right!"
fermat_theorem_check(a,b,c,n)
你能解释一下我做错了什么吗?我不想要快速的解决方案,我想知道为什么我的思维过程是错误的,以及我如何理解我试图使用的函数!
费马定理检查(a,b,c,n)您应该清楚地了解以下几点:
- 在Python中,变量是通过简单赋值定义的:
李>a=7
是一条语句,仅用于在控制台中显示值李>print
是一个函数,它完成两件事:打印消息并从用户返回值李>raw_input
- 当函数返回一个值时,可以将其赋值给变量
a
、b
、c
和n
李>
raw\u input
从用户那里获取一个值,然后print
语句打印该值。请注意,您的函数不返回任何内容李>
(a**n)+(b**n)==(c**2)
编辑:
忘记提到您没有将输入值转换为整数。默认情况下,这些是字符串,您不能对它们进行算术运算。我正在阅读同一本书,想看看其他人如何回答这个问题,我正在学习python。我正在使用PyCharm 2.3
def check_fermat(a, b, c, n):
print('There are no positive integers a, b, and c such that (a**n)(b**n) = (c**n) For any values of n > 2')
a = int(input('Enter a number for a'))
b = int(input('Enter a number for b'))
c = int(input('Enter a number for c'))
n = int(input('Enter a number for n'))
if (a ** n) + (b ** n) == (c ** n):
print('Holy smokes, Fermat was wrong!')
else:
print('No, that does not work')
检查\u fermat('a','b','c','n')
太棒了,我感谢你的支持。我是那种想知道“为什么”的人。我在一个相关的主题中找到了解决方案,但我不喜欢只抄袭别人的作品,因为我不学习。。。所以有几个简单的问题:为什么我的函数没有“返回”任何东西?我已经了解了“return”函数,但它到底是什么?我是否只需要对每个单独函数中的每个变量执行一个简单的return语句,声明“return(variable)”?因此,可能需要在我创建的每个函数中指示“return raw_input”?您可以在这些函数中编写
return
,而不是print
,这样就可以了。但是你也需要调用函数,这样它们才能工作。如果a
是一个函数,那么简单地编写a*2
将抛出一个错误。这是因为在这种情况下,a
就像一个门把手:它不包含门后面的东西,而是让你打开它。函数返回一些东西,然后当你打开那扇门时,这个东西就会从那里弹出。所以,你应该写a()。。。我想这都是因为打字错误!!!!对不起,浪费了大家的时间。我很感激至少给我看一下打字错误,因为我想出了一种方法来写类似的东西,每个都没有函数。。。但是现在我要测试函数以更好地定义程序!谢谢你的帮助,梅洛曼!