无法解决。并收到此错误

Not able to solve. and getting this error

我试图解决这个 python 练习:-

问题: 给定前 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)

无论如何记住

A return statement is used to end the execution of the function call and “returns” the result (value of the expression following the return keyword) to the caller. The statements after the return statements are not executed. If the return statement is without any expression, then the special value None is returned. Note: Return statement can not be used outside the function.