我正在编写一个程序,我想创建一个列表,如果需要可能两个。十个偶数和奇数随机数(1,100),各自的总和,[偶数]和[奇数]。我尝试过很多方法,但希望尽可能简单。我只是有点沮丧。我将包括我现在拥有的东西,也许有人可以插入一些有用的东西。我现在只有基础知识,因为看到我以前的东西很困惑。
import random
def main():
total_odd = 0
total_even = 0
num_list = []
for count in range(10):
num = random.randint(1, 100)
num_list.append(num)
total_odd += num
total_even += num
print(total_odd, total_even)
print(num_list)
main()
输出=
>>>
485 485
[76, 76, 74, 2, 9, 30, 30, 29, 66, 93]
>>>
非常感谢任何帮助。
答案 0 :(得分:1)
您永远不会检查random.randint
生成的数字是奇数还是偶数。您只是在两个案例中将num
添加到total_odd
和total_even
。在for
循环中加入支票:
for count in range(10):
num = random.randint(1, 100)
num_list.append(num)
if num%2 == 0: # num is even
total_even += num
else: # num is odd
total_odd += num
答案 1 :(得分:0)
>>> values = [76, 76, 74, 2, 9, 30, 30, 29, 66, 93]
>>> sum_odd = sum(x for x in values if x%2)
>>> sum_even = sum(values) - sum_odd
>>> print sum_odd,sum_even
131 354
可能是最简单的方法......
答案 2 :(得分:0)
最简单的方法可能是在您有足够的数字符合条件之前继续生成数字:
import random
def check_even(num):
return num % 2 == 0
def check_odd(num):
return num % 2 != 0
def get_numbers(checker):
num_list = []
count = 0
while count < 10:
num = random.randint(1, 100)
if checker(num):
num_list.append(num)
count += 1
return num_list
def main():
even_numbers = get_numbers(check_even)
odd_numbers = get_numbers(check_odd)
num_list = []
num_list.extend(even_numbers)
num_list.extend(odd_numbers)
print(sum(even_numbers), sum(odd_numbers))
print(num_list)
您当前的方法只生成10个数字,并将它们始终添加到num_list
。你想要的是保持生成数字,直到你有10个偶数并继续生成,直到有10个奇数。
上面的代码通过使用名为get_numbers
的参数调用checker
函数来实现这一点,该函数是函数(是的,您可以将函数作为参数传递),该函数被调用以检查数字。 / p>