无法解决.并得到这个错误[关闭]。

问题描述 投票:0回答:1

我试图解决这个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
python-3.x sum range nameerror
1个回答
1
投票

试试这个。

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。注意:返回语句不能在函数外使用。

© www.soinside.com 2019 - 2024. All rights reserved.