-2

我有一个任务,无法找出真正的解决方案。

def triple(n):    #multiplies number with 3
    return (n*3)
def square(n):
    return (n**2)   #takes second power of number

for i in range(1,11):
    if triple(i) > square(i):
        print((f"triple({i})=={triple(i)} square({i})=={square(i)}"))
triple(1)==3 square(1)==1
triple(2)==6 square(2)==4
  1. 当一个值的平方大于该值的三倍时,我应该停止迭代,而不在最后一次迭代中打印任何内容。

  2. 而且函数triple 和square 每次迭代都必须调用一次。

我尝试过的其他事情

    ls =[f"triple({i})=={triple(i)} square({i})=={square(i)}" for i in range(1,11) if triple(i) > square(i)]
    for i in ls:
        print(i)

有一个测试可以检查我的答案,它说“打印的行数错误”,我问了一些人,他们只是告诉我应该将从每个函数获取的值存储到一个变量中。这些就是我试图做的他们所说的

4

2 回答 2

1

根据您的评论,您的 if 条件全部错误:

def triple(n):    #multiplies number with 3
    return (n*3)
def square(n):
    return (n**2)   #takes second power of number

for i in range(1,11):   #I asked to iterate 1 to 10
    triple_ = triple(i)
    square_ = square(i)
    if triple_ > square_:   #it should only print if the square of the number is smaller than the triple
        print(f"triple({i})=={triple(i)} square({i})=={square(i)}")

break 将退出 for 循环,您希望避免打印,这是一个完全不同的主题

于 2020-06-03T19:23:20.940 回答
0

试试下面的代码,

    def triple(n):    #multiplies number with 3
        return (n*3)
    def square(n):
        return (n**2)   #takes second power of number

    for i in range(1,11):   #I asked to iterate 1 to 10
        triple_ = triple(i)
        square_ = square(i)
        if triple_ < square_:   #it shouldnt print if square of the 
number is larger than the triple
            pass #it must END the loop
        else:
            print("Triple of " + str(i) + " is " + str(triple(i)) + " and its greater than or equal to its square " + str(square(i)))

在 i = 3 的情况下,正方形是 9,三重也是 9。因此,如果将 <= 替换为 <,您还将获得 i = 3 的输出。之后,它将不会打印结果,因为条件会没见过。

之后它会停止打印,因为不满足任何条件。对于 (1,10) 之间的数字,triple 是平方的唯一可能的数字小于或等于 Triple 是 1,2 和 3。

于 2020-06-03T19:41:01.777 回答