尝试返回多个随机数作为已定义函数的输入参数,以在数字为偶数而false为奇数的情况下返回true



我必须定义三个函数。第一个函数要求用户输入,然后返回给下一个函数,该函数在第一个函数中指定的范围内创建随机数。然后返回到第三个函数,该函数检查所有数字,如果它们是偶数,则返回true,如果是奇数,则返回false。到目前为止我有这个,但我得到了错误";TypeError:"int"对象不可迭代"我不确定我做错了什么。

import random
def odd(n):
my_list = []
my_list.append(n)
for i in len(my_list):
if n%2 != 0:
return False
else:
return True

def producer(num):
for i in range(num):
n = random.randint(100,2000)
return n
def main():
ask = int(input('How many numbers do you want to generate? '))
return ask
num = main()
numbers = producer(num)
gen = odd(n)
print(gen)

错误是因为len(my_list(中的for i。len(my_list(将返回一个int.

你想要";对于my_list中的num";相反则在函数内部;num%2";而不是";n%2";。

这就是您想要实现的目标吗:

import random

def get_user_input():
# The first asks the user for an input and it is returned to the next
user_input = int(input('How many numbers do you want to generate? '))
return user_input

def producer(n):
# which creates random numbers in the range specified in the first function.
random_list = [random.randint(100, 2000) for i in range(n)]
return random_list

def odd(lst):
# That is then returned to the third function which checks all the numbers and
for n in lst:
if n % 2 == 0:
# returns true if they are even
print(True)
else:
# and false if they are odd
print(False)

if __name__ == '__main__':   
user_input = get_user_input()    
list_range = producer(user_input)    
odd(list_range)  

我发现您的代码有很多问题。

  1. 您的for循环将在循环的第一次迭代中返回一个值,因此它们对循环没有任何好处。。。任何一个循环都不会有第二次迭代。

  2. n在外部作用域中未定义,因此gen = odd(n)行将抛出一个异常,声明n未定义。

  3. 您在定义代码要执行的操作时遇到了问题。您希望生成一个数字列表并将其传递给odd函数,但随后您表示希望odd根据if"返回TrueFalse;那个数字">是奇数或偶数。但是没有一个数字。你正在传递一个数字列表,一般来说,有些是奇数,有些是偶数。

  4. 你对n%2 != 0的理解似乎有些倒退。

这里有一个解决所有这些问题的代码版本。我决定将您的odd函数替换为名为more_odd_than_even的函数。该函数顾名思义。如果列表中奇数多于偶数,则返回True,否则返回False

import random
def more_odd_than_even(the_list):
odd_count = 0
even_count = 0
for n in the_list:
if n % 2 == 0:
even_count += 1
else:
odd_count += 1
return odd_count > even_count
def producer(num):
my_list = []
for i in range(num):
n = random.randint(100, 2000)
my_list.append(n)
return my_list
def main():
ask = int(input('How many numbers do you want to generate? '))
return ask
num = main()
numbers = producer(num)
print(f"The generated list is:{numbers}")
gen = more_odd_than_even(numbers)
if gen:
print("More of the numbers are odd")
else:
print("More of the numbers are even (or there are an equal number of each)")

以下是该代码的一些运行示例:

How many numbers do you want to generate? 6
The generated list is:[972, 1327, 1603, 1714, 491, 1007]
More of the numbers are odd
How many numbers do you want to generate? 7
The generated list is:[1540, 696, 904, 475, 1007, 1238, 148]
More of the numbers are even (or there are an equal number of each)

最新更新