写一个Python程序,不使用乘法或指数就可以找到一个数字的平方?
感谢您的阅读,希望您能回答我的问题。我一直在尝试编写一个Python程序,它可以在不使用乘法或指数的情况下找到一个数字的平方。相反,我必须得到从1开始的第一个奇数n的总和。这就是我到目前为止所做的:写一个Python程序,不使用乘法或指数就可以找到一个数字的平方?,python,for-loop,perfect-square,Python,For Loop,Perfect Square,感谢您的阅读,希望您能回答我的问题。我一直在尝试编写一个Python程序,它可以在不使用乘法或指数的情况下找到一个数字的平方。相反,我必须得到从1开始的第一个奇数n的总和。这就是我到目前为止所做的: def square(): print("This program calculates the square of a given number") print("WITHOUT using multiplication! ") odd = 1 n = eval(i
def square():
print("This program calculates the square of a given number")
print("WITHOUT using multiplication! ")
odd = 1
n = eval(input("Enter a number: "))
for odd in range(0, n + 1, 2):
odd = odd + 2
final_square = n + odd
print(n, "squared is", final_square, ".")
编辑:嗨,伙计们,我不能做4+4+4+4。我必须做1+3+5+7,我不知道怎么做。它给了我4的平方等于11的值 回到乘法的原始定义 只需将数字n加上n次。什么这么难?虽然效率很低,但它会起作用的 我相信还有一种更像蟒蛇的方式:
def square(n):
sum = 0
for i in range(0,n):
sum = sum + n
return sum
只是一些提示:
尽量不要使用eval()
,它将计算给定的任何输入,因此它可以执行您不想执行的操作。相反,使用
记住,比如说4*4,就是4+4+4+4。对于for循环,您已经走上了正确的轨道,但是现在让循环迭代n次,将n添加到自身中
new = 0
for _ in range(n):
new += n
请注意,这不适用于负数。如果要处理这些问题,可以在开始时获得n
的绝对值:
def square(n):
n = abs(n)
....
既然有人告诉你必须通过产生前n个奇数来得到答案,那么你需要考虑如何做到这一点——当然你的循环没有做到这一点: 几个问题:
final = 0
for c in range(1, n+1): #start counting from 1 to do 1 to n+1
odd = c*2 -1 #Use the series above to generate each odd number.
final += odd
应该有用
要做到这一点,一种更为“蟒蛇式”的方法是:
final = sum(c*2-1 for c in range(1,n))
这将使用生成器创建所有奇数(相当于循环),并在创建值时求和。为什么不能在其自身添加一个数字…?在解决方案中必须使用range()吗?请参阅我的答案-我不知道循环如何得到11,因为你的循环实际上不是生成前n个奇数,而是生成一系列偶数。相关:赋值似乎不仅仅是为了找到n2的值,而是为了使用数学技巧,使前n个奇数的和等于n2。如果这个答案有效,你能勾选它接受它吗