对于这个问题,我有:
user_input = '5 1 7 8 2 1 3'
user_list = list(user_input.split())
even_nums = []
odd_nums = []
for i in range(len(user_list)):
if int(user_list[i]) % 2 == 0:
even_nums.append(user_list[i])
else:
odd_nums.append(user_list[i])
print(even_nums)
print(odd_nums)
even_sum = sum(even_nums)
odd_sum = sum(odd_nums)
if even_sum > odd_sum:
print('Even Wins!')
else:
print('Odd Wins!')
答案 0 :(得分:3)
使用.split()
相反:
user_list = [int(number) for number in user_input.split(' ')]
因此完整的代码是:
user_input = '5 1 7 8 2 1 3'
user_list = [int(number) for number in user_input.split(' ')]
even_nums = []
odd_nums = []
for i in range(len(user_list)):
if int(user_list[i]) % 2 == 0:
even_nums.append(user_list[i])
else:
odd_nums.append(user_list[i])
print(even_nums)
print(odd_nums)
even_sum = sum(even_nums)
odd_sum = sum(odd_nums)
if even_sum > odd_sum:
print('Even Wins!')
else:
print('Odd Wins!')
答案 1 :(得分:1)
您的问题是您要创建一个字符串列表,而不是数字列表。更改这些行
even_nums.append(user_list[i])
odd_nums.append(user_list[i])
到
even_nums.append(int(user_list[i]))
odd_nums.append(int(user_list[i]))
答案 2 :(得分:1)
您可以在这里使用地图功能。
使用
user_list = list(map(int, user_input.split()))
代替
user_list = list(user_input.split())
更改后,您的代码即可正常工作。
答案 3 :(得分:0)
更改为
even_nums.append(int(user_list[i]))
else:
odd_nums.append(int(user_list[i]))
答案 4 :(得分:0)
您可以只使用list comprehensions
将user_input中的str
转换为int
。
更改
user_list = list(user_input.split())
到
user_list = [int(i) for i in user_input.split()]
其余代码都可以正常工作
答案 5 :(得分:0)
总体而言,您的代码确实非常接近。您可以通过强制转换为int来检查偶数/奇数,这很好。但是您不会将int存储在新列表中。您存储原始字符串。如果增加一个额外的步骤以取出数字并将其转换为整数,则代码将更具可读性,并且可以执行您想要的操作。例如:
user_input = '5 1 7 8 2 1 3'
user_list = list(user_input.split())
# ^^^^ don't need this. it's already a list
even_nums = []
odd_nums = []
for i in range(len(user_list)):
num = int(user_list[i]) # adding this one extra line makes the code easier to understand
if num % 2 == 0:
even_nums.append(num)
else:
odd_nums.append(num)
print(even_nums)
print(odd_nums)
even_sum = sum(even_nums)
odd_sum = sum(odd_nums)
if even_sum > odd_sum:
print('Even Wins!')
else:
print('Odd Wins!')
input() # waits for newline before letting the program close. :)
通常有很多方法可以做某事。对于最好的方法,不同的人有不同的想法。但是,只要您选择一种可行的方式,这就是您入门时最重要的。 编码愉快!
如果您希望看到稍微紧一点的代码,也可以将for
循环的前两行替换为:
for n in user_list:
num = int(n)
答案 6 :(得分:0)
user_input = '5 1 7 8 2 1 3'
user_list = list(map(int,user_input.split()))
even_nums = []
odd_nums = []
for i in range(len(user_list)):
if int(user_list[i]) % 2 == 0:
even_nums.append(user_list[i])
else:
odd_nums.append(user_list[i])
print(even_nums)
print(odd_nums)
even_sum = sum(even_nums)
odd_sum = sum(odd_nums)
if even_sum > odd_sum:
print('Even Wins!')
else:
print('Odd Wins!')
这将按预期工作!
答案 7 :(得分:0)
这是将字符串转换为int列表的解决方案
user_list = [int(number) for number in user_input.split(' ')]
完整源代码
# string input
user_input = '5 1 7 8 2 1 3'
# convert string to int list
user_list = [int(number) for number in user_input.split(' ')]
even_nums = []
odd_nums = []
# assign values to even and odd list
for i in range(len(user_list)):
if int(user_list[i]) % 2 == 0:
even_nums.append(user_list[i])
else:
odd_nums.append(user_list[i])
print(even_nums)
print(odd_nums)
# calculate sum of even list
even_sum = sum(even_nums)
# calculate sum of odd list
odd_sum = sum(odd_nums)
# who win?
if even_sum > odd_sum:
print('Even Wins!')
else:
print('Odd Wins!')