Python 新手:测试fermat';简单用户输入(a,b,c,n)的s定理,以及该定理是否成立的if/else语句?

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 程序应该打印“天哪,费马错了!”否则程序应该打印“不,那不

在编程的第一周,我是一个完全的新手(辞去工作,开始自学课程),我被《思考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定理

这是我目前的代码:

#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')
    
  • 将来自用户的整数值分配给方程式a、b、c、n

    检查\u fermat('a','b','c','n')


  • 太棒了,我感谢你的支持。我是那种想知道“为什么”的人。我在一个相关的主题中找到了解决方案,但我不喜欢只抄袭别人的作品,因为我不学习。。。所以有几个简单的问题:为什么我的函数没有“返回”任何东西?我已经了解了“return”函数,但它到底是什么?我是否只需要对每个单独函数中的每个变量执行一个简单的return语句,声明“return(variable)”?因此,可能需要在我创建的每个函数中指示“return raw_input”?您可以在这些函数中编写
    return
    ,而不是
    print
    ,这样就可以了。但是你也需要调用函数,这样它们才能工作。如果
    a
    是一个函数,那么简单地编写
    a*2
    将抛出一个错误。这是因为在这种情况下,
    a
    就像一个门把手:它不包含门后面的东西,而是让你打开它。函数返回一些东西,然后当你打开那扇门时,这个东西就会从那里弹出。所以,你应该写
    a()。。。我想这都是因为打字错误!!!!对不起,浪费了大家的时间。我很感激至少给我看一下打字错误,因为我想出了一种方法来写类似的东西,每个都没有函数。。。但是现在我要测试函数以更好地定义程序!谢谢你的帮助,梅洛曼!