感谢您阅读并希望回复我的问题。我试图编写这个Python程序,找到一个数字的正方形而不使用乘法或指数。相反,我必须从1开始得到第一个奇数 n 数字的总和。这是我到目前为止所做的:
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或什么的。
答案 0 :(得分:1)
一些提示:
尽量不要使用eval()
,它会评估给定的任何输入,因此它可以执行您不想做的事情。相反,请使用int()
。
请记住,比如说4 * 4,只是4 + 4 + 4 + 4.你使用for循环进入正确的轨道,但是现在让循环迭代n次将n加到自身。< / p>
new = 0
for _ in range(n):
new += n
请注意,这不会与负数一起使用。如果您要处理这些问题,可能会在开头时获得n
olute值def square(n):
n = abs(n)
....
:
{{1}}
答案 1 :(得分:1)
既然你被告知你必须通过产生前n个奇数来得到答案,那么你需要考虑如何做到这一点 - 当然你的循环没有这样做:
几个问题:
我的建议是重做你的循环:第一个'n'个奇数字的形式是:
1,3,5,... n * 2-1 (从1开始计数而不是从零开始计算)
这样的循环:
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
应该有效
更加'pythonic'的方法是:
final = sum(c*2-1 for c in range(1,n))
这使用生成器来创建所有奇数(相当于循环),并在创建值时对这些值求和。
答案 2 :(得分:0)
回到乘法的原始定义。
只需将数字n添加到自身n次。有什么难的?地狱效率低下,但它会奏效。
我确信有更多的Pythonic方式:
def square(n):
sum = 0
for i in range(0,n):
sum = sum + n
return sum