我正在尝试创建一个名为“odd_even”的函数,它采用我已经创建的列表(名为“nums”)并确定奇数和偶数的数量,然后将变量返回给我。但是,当我运行这段代码时,我得到:
NameError: 名称 'odd' 未定义
我该如何解决这个问题?如果您能给我任何关于“返回”功能的有用指示,我们也将不胜感激。
import random
def main():
nums = []
for x in range(10):
nums.append(random.randrange(1,26))
def odd_even(given_list):
odd = 0
even = 0
for x in given_list:
if x % 2 == 0:
even += 1
else:
odd += 1
return odd
return even
odd_even(nums)
print("List had ", odd, "odds and ", even, "evens.")
main()
最佳答案
你做错了两件事。
首先,您试图返回
两个值,但在不同的行上。你不能这样做,要做到这一点,做一个元组:
def odd_even(given_list):
odd = 0
even = 0
for x in given_list:
if x % 2 == 0:
even += 1
else:
odd += 1
return odd, even
其次,您调用函数但不存储return
的值。所以你需要改变:
odd_even(nums)
到 odd, even = odd_even(nums)
通过尝试执行:
print("List had ", odd, "odds and ", even, "evens.")
main()
正在寻找变量 odd
和 even
,但它们不存在于 main()
,它们在本地存在于 odd_even()
中(因此你调用 return
是为了将它们返回给调用函数。你只看到关于 odd
的错误是因为它是解释器遇到错误的 print()
中的第一个变量。
没有正确使用 return
的唯一方法是将它们声明为 global
。但这是个坏主意,所以不要那样做,把事情放在堆栈上!
关于python - 列表函数中的奇数和偶数 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46517921/