我试图解决这个python练习:-。
问题:给定前10个数的范围,从起始数到结束数进行迭代,并打印出当前数和前一个数之和。给出前10个数字的范围,从开始的数字到结束的数字迭代,并打印出当前数字和前一个数字的总和。
我的代码(1):-
rng = range(10)
def sum_of_numbers(x) :
for i in x :
b = i + (i-1)
if i in x :
return b
elif b < 0 : # when number will be negative.
return i
print("current number is"+ str(i) + ". And sum of the previ. and curr. number is " + str(sum_of_numbers(rng)))
但我得到这个错误:-
File ".\question2.py", line 11, in <module>
print("current number is"+ str(i) + ". And sum of the previ. and curr. number is " + str(sum_of_numbers(rng)))
NameError: name 'i' is not defined
然后我试着修改它的代码2。
rng = range(10)
def sum_of_numbers(x) :
if i in x :
b = i + (i-1)
return b
elif b < 0 :
return i
print("current number is"+ str(i) + ". And sum of the previ. and curr. number is " + str(sum_of_numbers(rng)))
同样的错误在终端:-
File ".\question2.py", line 9, in <module>
print("current number is"+ str(i) + ". And sum of the previ. and curr. number is " + str(sum_of_numbers(rng)))
NameError: name 'i' is not defined
试试这个。
rng = range(10)
def sum_of_numbers(current_number):
sum_ = current_number + (current_number -1)
// do other logic
return current_number, sum_
for i in rng:
current_number, sum_ = sum_of_numbers(i)
print("current number is "+ str(current_number) + ". And sum of the previ. and curr. number is " + str(sum_))
你必须在循环中使用函数。而不是函数中的for循环。因为,循环中的return语句会阻止循环的进一步迭代,即只有一次迭代。
或者像这样去做。
rng = range(10)
def sum_of_numbers(x) :
for i in x :
b = i + (i-1)
if i in x :
b = b
elif b < 0 : # when number will be negative.
b = i
print("current number is"+ str(i) + ". And sum of the previ. and curr. number is " + str(b))
sum_of_numbers(rng)
总之要记住
return语句用于结束函数调用的执行,并将结果(return关键字后的表达式的值)"返回 "给调用者。回归语句之后的语句不执行。如果返回语句没有任何表达式,则返回特殊值None。注意:返回语句不能在函数外使用。