【问题标题】:How do I print the results of my math of my functions? [python functions] (edited)如何打印我的函数数学结果? [python 函数](已编辑)
【发布时间】:2019-11-12 21:20:39
【问题描述】:

我有 3 个不同的小程序,我不知道如何显示它们,我已经完成了数学和其他东西,我真的不知道还能说什么,除了我需要绝望的帮助,因为我不知道在我的生活中是否有人在这方面有经验并且可以帮助我。

  1. 这个使用一个函数来确定任何一年是否是闰年。让你的函数返回一个布尔值。 (闰年可以被 4 整除,除非它们发生在不能被 400 整除的新世纪之初。1900 年不是闰年;2000 年是。)
  2. 一个程序,它接受一条线上的两个点,并在方程 y = mx + b 中返回 m 和 b 的值。 (m = (y1 - y2) / (x1 - x2) 和 b = y1 - mx1)
  3. 在子程序中使用欧几里得算法来查找两个数的最大公因数的程序。示例: 45 和 55 的 GCF 为 5,来自序列: 55, 45, 10, 5, 0 。返回 GCF

为 1 编码。

def isLeapYear(year):
    if year % 4 == 0:
        if year % 100 == 0:
            if year % 400 == 0:
                return True
            else:
                return False
        else:
            return True
    else:
        return False

为 2 编码。

    rise = y2-y1
    run = x2-x1
    m = rise/run
    b = y2/(m*x2)
    return print("m = " + str(m) + " and b = " + str(b))

为 3 编码。

def gcf(n1,n2):

    remainder = None

    while remainder != 0:
        remainder = n1 % n2
        n1 = n2
        n2 = remainder


    return n1

编辑:对不起,我不擅长解释事情,例如,我希望闰年的功能像; “输入你的闰年!” (存储功能) 对不起,但是(leapyeartheyentered)不是闰年! (或)(他们输入的闰年)是闰年!

是的,有人说它是因为我的英语也很差,我想-我想打印编码的结果

【问题讨论】:

  • 显示它们的意思是你需要“运行”它们吗?
  • 我不明白你在问什么。您在打印函数结果时遇到问题吗?
  • 此外,在闰年的代码中,您不需要 3 个 if 语句。它们是多余的。你可以使用if year%400==0 : return True else: return False
  • @zenofpython 我认为无论代表如何,您都可以对自己的问题发表评论。
  • @OferSadan 是的!

标签: python function


【解决方案1】:

听起来您正在解决一个家庭作业问题,并且该问题要求您编写函数来完成三件不同的事情。它要求您围绕它们编写包装代码来调用函数并打印出结果,但您可能出于自己的原因想要这样做(例如,在提交作业之前测试函数,或者只是为了学习如何)。

无论如何,要学习的关键是如何调用函数。对于闰年函数,您可能希望在 if 语句中进行调用,因为您将根据返回的布尔结果打印两条不同的消息。

year = int(input("Enter your leap year!")) # prompt the user to enter a year, convert to int

if isLeapYear(year):
    print(year, "is a leap year!")
else:
    print("I'm sorry,", year, "is not a leap year.")

对于您的第二个函数,您可能需要将其代码更改为 return mb 值,并将打印留给调用代码,因为这就是问题陈述所说的。在 Python 中,您可以返回一个值元组,这在大多数情况下就像一次返回两个值一样(您可以非常轻松地打包和解包元组)。你把第二个函数的名字删掉了,但是如果我们叫它calcLine,更新后的函数和调用代码可能是这样的:

def calcLine(x1, y1, x2, y2):
    rise = y2-y1
    run = x2-x1
    m = rise/run
    b = y2 - (m*x2) # math fix, as suggested in the comments above
    return m, b  # return a 2-tuple, rather than printing here

coords_string = input("Enter x1, y1, x2, y2 coordinates: ") # get a string of coordinates
x1, y1, x2, y2 = map(float, coords_string.split(','))       # parse the string into numbers

slope, intercept = calcLine(x1, y1, x2, y2)                 # do the calculation

print("m = {} and b = {}".format(slope, intercept))         # print our results

如果你不完全理解调用代码的字符串解析和格式化部分,不要担心,你理解的关键行是函数调用:m, b = calcLine(x1, y1, x2, y2)。这会调用上面定义的函数,并将返回的 mb 值保存在一个元组中,并将它们解压缩到两个新的全局变量中,以便我们以后使用(我选择使用与 @987654331 不同的名称@ 和 b 明确表示它们与函数的变量是分开的,认为它们具有相同的值)。

最后一个函数可能是最容易处理的,不过既然你还没有说要为它打印什么,那我就留给你吧!

【讨论】:

  • 这行得通,我不能告诉你这个网站有多少支持
【解决方案2】:

第一个问题使用:

y = int(input('Enter year: '))
if isLeapYear(y):
  print('%d is a leap year' % y)
else:
  print('%d is not a leap year' % y)

在第二个问题中:

return print("m = " + str(m) + " and b = " + str(b))

返回None。这是因为函数print 返回None。它用于打印。

您可能想要创建一个返回某些内容的函数,或者您想要打印某些内容。

如果你需要从你做的函数返回两件事:

return m,b

然后在调用该函数的代码中:

m,b = CalcMB(x1,y1,x2,y2)

【讨论】:

  • 发帖前检查了吗?
  • 也许 input(...) 总是返回一个字符串?
  • input 返回值的类型检查仅适用于 Python 2,我怀疑这些天新程序员会使用它(因为官方支持最终将在那一年)。正如 JohanC 所说,在 Python 3 中,input 总是返回一个字符串。
  • 是的,你是对的,我在 python2 上测试过它。解决它。我认为除此之外的尝试不适合 op 目前对该语言的了解。
猜你喜欢
  • 1970-01-01
  • 2016-11-22
  • 2015-09-26
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-18
相关资源
最近更新 更多