【问题标题】:Unable to return the correct result of the function无法返回函数的正确结果
【发布时间】:2018-10-13 01:18:55
【问题描述】:

我只是学习代码的初学者,完全没有任何先验知识。

我在下面编写了一个简单的代码,以应用我定义函数和 for 循环的知识来工作。该代码应该允许用户根据他们的输入获得任何数字的幂。但是,正如您将在下面观察到的,我将始终得到 0 的结果。

老实说,我不确定我哪里出错了,并且被告知我的代码不是最易读的。因此,我想寻求您的帮助,以启发我它有什么问题以及如何使它变得更好。

非常感谢你们!

def to_power(base, power):
    result = 1
    for base in range(power):
        result = result * base
    return int(result)


print(to_power(int(input("Enter Base Number: ")), int(input("Enter Power: "))))

输入基数:4
输入电源:4
0
进程以退出代码 0 结束

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    你很亲密。这是您的代码的工作版本。

    您的代码有问题:

    • range(power) 将生成从 0power-1 的值。您使用 base 来迭代这些值,并且由于您使用的是 result = result * base,因此您乘以 0,这就是您得到 0 的原因

    解决方案:

    • 您只需将循环迭代power 次数,然后继续将base 乘以那么多 (power) 次数。由于这里没有用到循环的索引,所以我在for _ in range(power):中使用了_

    def to_power(base, power): 
        result = 1 
        for _ in range(power): 
            result = result * base 
        return int(result)
    
    print(to_power(int(input("Enter Base Number: ")), int(input("Enter Power: "))))
    
    # Enter Base Number: 4
    # Enter Power: 4
    # 256
    

    【讨论】:

    • 非常感谢您的帮助!我仍然不确定循环索引背后的基本原理。如果我错了,请纠正我,但是为什么_,似乎是未定义的,能够防止结果变为0。另外,循环的索引不是任何值的位置吗?一个字符串和列表?最后,当我的输入 != 0 时,为什么我对 base 的输入被转换为 0?
    • 对于我的许多问题,我深表歉意,因为我是新手,非常想了解代码和功能背后的逻辑。非常感谢大家的帮助
    • @ExiligeZs:range(power): 将生成一个长度等于功率的生成器(在本例中为 4)。你也可以使用for i in range(power): ,但是你没有在你的for循环中使用索引i。所以基本上i 只是一个虚拟索引,其主要目的是创建一个 for 循环 4 次。在这种情况下,您可以使用 _ 来避免代码中未使用的变量。结果不会归零,因为正如我所说,您没有在任何地方使用 for 循环生成的索引。您只是使用循环运行您的乘数 result = result * base 4 次
    • @ExiligeZs:您还可以阅读here 的答案以了解更多关于_的信息
    • 我明白了,非常感谢您的意见!这在我正在学习的在线教程中没有讲授,现在我明白了如何包含虚拟索引以使循环运行“n”次
    【解决方案2】:

    看起来这就是你想要的:

    def to_power(base, power):
       result = 1
       for i in range(power):
         result = result * base
    return int(result)
    

    例子:

    to_power(4,4)
    Out[5]: 256
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      相关资源
      最近更新 更多