首页 > 解决方案 > 在一个范围内调用一次函数

问题描述

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

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)
for i in range(1, 11):
    x = triple(i)
    y = square(i)
    if x > y:  #when i put x>=y its acceps the numberof calling squares but not triple
        print(f"triple({i})=={x} square({i})=={y}")

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

标签: pythonfunctionfor-loop

解决方案


您需要为 square>triple 设置另一个条件,当它匹配时,您可以通过break退出循环

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)}"))
    elif triple(i) < square(i):
        break

推荐阅读