【问题标题】:Why does this for-loop always return the square of the number and not the exponent value?为什么这个 for 循环总是返回数字的平方而不是指数值?
【发布时间】:2023-01-02 16:41:38
【问题描述】:

我试图将其编码为 python: 本质上它是一个指数计算器 所以对于 exp(2, 5) 它应该返回 25个

def exp(num, pow):
    for i in range(0, pow, 1):
        num1=num*num
    print(num1)
print(exp(2, 5))

为什么它不起作用?

我希望它能工作,但它总是给出数字的平方。

【问题讨论】:

  • 1. printreturn不一样。 2. 你得到 num1 等于 num 的平方,因为这就是你定义它的方式 -- num1 = num * num。为什么 num1 会是其他任何东西?
  • num*num 给出了 num 的平方,并且 num1 没有在您的循环中更新。

标签: python python-3.x function loops for-loop


【解决方案1】:

循环的每次迭代只是将 num 乘以自身,一次.

尽可能坚持你现有的代码,你可以修改你的功能是这样的:

def exp(num, pow):
        original_num = num

        for i in range(1,pow,1):
            num = num * original_num
        print(num)

【讨论】:

  • 这对我帮助很大
【解决方案2】:

python 中的指数是用 (**) 计算的。你可以简单地这样做:

def exp(num, pow):
    return num**pow
print(exp(2, 5))

这应该将价值归还给力量

【讨论】:

  • 谢谢,我今天才开始使用 python。
  • 1. 问题是“为什么他们的代码不起作用”,而不是“我如何让它起作用”。 2. 像这样基本的问题通常会有重复。请寻找重复的问题并标记/投票关闭,而不是回答重复的问题。请参阅How to Answer 的“常见问题”部分
  • 当然..谢谢你指出@PranavHosangadi
【解决方案3】:

你应该做num1=num1*numnum=num*num而不是num1=num*num

如果你这样做num1=num*num,无论循环花费多长时间,num1 将始终包含 num^2。

num1 = num
for i in range(1,n):
    num1=num1*num
return num1

要么

for i in range(1,n):
    num=num*num
return num

【讨论】:

  • 我尝试了 num=num*num 但失败了,但是这有效,谢谢
  • 好的@crimson-wind。如果您认为此答案有帮助,请接受此答案(并给予支持)。谢谢
猜你喜欢
  • 2014-04-01
  • 2021-11-09
  • 2011-06-05
  • 2022-01-21
  • 2016-03-30
  • 1970-01-01
  • 1970-01-01
  • 2019-04-27
相关资源
最近更新 更多