我有一个初学者的问题。循环对我来说非常难以理解,所以我来寻求帮助。
我正在尝试创建一个函数来计算用户输入列表中偶数的数量,最后用负数表示列表的结尾。我知道我需要使用while循环,但是我无法弄清楚如何遍历输入列表的索引。这就是我到目前为止,有人可以帮我一把吗?
def find_even_count(numlist):
count = 0
numlist.split()
while numlist > 0:
if numlist % 2 == 0:
count += 1
return count
numlist = raw_input("Please enter a list of numbers, with a negative at the end: ")
print find_even_count(numlist)
我使用拆分来分离列表的索引,但我知道我做错了什么。任何人都可以指出我做错了什么,或者指点一步一步解释这里要做什么? 非常感谢你们,我知道你们的技能水平可能还有更多,但感谢你的帮助!
答案 0 :(得分:1)
你非常接近,只是几个更正:
def find_even_count(numlist):
count = 0
lst = numlist.split()
for num in lst:
if int(num) % 2 == 0:
count += 1
return count
numlist = raw_input("Please enter a list of numbers, with a negative at the end: ")
print find_even_count(numlist)
我使用了for循环而不是while循环,将numlist.split()
的结果存储到变量(lst)中,然后迭代了它。
答案 1 :(得分:1)
你有几个问题:
split
numlist
,但不要将结果列表分配给任何内容。numlist
进行操作,这仍然是所有数字的字符串。相反,请尝试:
def find_even_count(numlist):
count = 0
for numstr in numlist.split(): # iterate over the list
num = int(numstr) # convert each item to an integer
if num < 0:
break # stop when we hit a negative
elif num % 2 == 0:
count += 1 # increment count for even numbers
return count # return the total
或者,在一行中完成整个事情:
def find_even_count(numlist):
return sum(num % 2 for num in map(int, numlist.split()) if num > 0)
(注意:如果用户试图通过在“最终”负数之后添加更多数字来欺骗您,例如使用numlist = "1 2 -1 3 4"
)
如果你必须使用while
循环(这不是最好的工具),它看起来像:
def find_even_count(numlist):
index = count = 0
numlist = list(map(int, numlist.split()))
while numlist[index] > 0:
if numlist[index] % 2 == 0:
count += 1
index += 1
return count