代码帝国(python)

时间:2016-02-14 15:26:38

标签: python

美好的一天!我决定通过播放EOC来学习Python。所以我有一个任务是写一个函数,必须计算圆的面积,三角形和矩形,我写了,但后来我想,长度必须有正数。怎么检查?解释员也说,21线上有一些问题,但我还不知道如何修复它。请帮帮我!)谢谢!

P.S。 May be It'll help

def simple_areas(*args):
if len(args) == 1: #The area of the circle
    args = 0.25 * 3.14 * (args[0])**2
    return ('{:.2f}'.format(args))

elif len(args) == 2: #The area of the rectangle
    args = args[0] * args[1]
    return args

elif len(args) == 3: #The area of the triangle
    if args[0] + args[1] > args[2] and args[1] + args[2] > args[0] and args[0] + args[2] > args[1]:
        args = 0.5*(args[0] * args[2])
        return args
    else:
        return 'The sum of lengths of two sides is less or equal the length of the third or is equal'
else:
    return 0

if __name__ == '__main__':
    # These "asserts" using only for self-checking and not necessary for auto-   testing
    def almost_equal(checked, correct, significant_digits=2):
        precision = 0.1 ** significant_digits
        return correct - precision < checked < correct + precision

    assert almost_equal(simple_areas(3), 7.07), "Circle"
    assert almost_equal(simple_areas(2, 2), 4), "Square"
    assert almost_equal(simple_areas(2, 3), 6), "Rectangle"
    assert almost_equal(simple_areas(3, 5, 4), 6), "Triangle"
    assert almost_equal(simple_areas(1.5, 2.5, 2), 1.5), "Small triangle"

    print("Earn cool rewards by using the 'Check' button!")

2 个答案:

答案 0 :(得分:0)

你需要缩进,因为Python有缩进作为必需的东西。例如,你想要

def f():
  print ("hi")

如果您需要类似积极的数字,请考虑积极的事情意味着什么。它应该大于0,小于等等。

最后一点,我还建议您使用一些变量,例如区域,这样就很清楚你的功能在做什么。当您重用变量args并将其设置为其他东西时,它会使理解/读取变得困难并且也容易出错。 (让我们说你以后想再次使用args,但是因为你把它设置成其他的东西你就不能这样做了。)

答案 1 :(得分:0)

第21行的错误if name == 'main'是因为name不存在。我认为你的意思是__name__,所以将该行更改为:

if __name__ == 'main':

如果您需要检查数字是否为正,那么您可以使用以下语法检查它是否大于0:

if number > 0: # Do something

在您的情况下,检查数字是否为正数会更合适,所以您可以这样做:

if not number > 0:
    print("Please enter positive numbers.")
    return # 'return' with no arguments exits the function

我们可以使用any函数和list comprehension来检查args中的所有值是否为正数:

if any(x <= 0 for x in args):
    print("Please enter positive numbers.")
    return