myList = []
size = int(input("How many integers do you want in your list? "))
for list in range(size):
element = int(input("Enter an integer to add to your list: "))
myList.append(element)
print(myList)
#a function that keeps count of all even integers using while loop
def count_evens_while(alist):
evenIntegers = 0
while range <= size:
for element in range(size):
if element % 2 == 0:
evenIntegers = evenIntegers + 1
print(evenIntegers)
这是我到目前为止所拥有的。我无法弄清楚我需要做什么! (我是初学者,如果这个问题看起来如此简单/容易解决,那就很抱歉)
答案 0 :(得分:1)
def count_evens_while(alist):
evenIntegers = 0
idx = 0
while idx < len(alist):
if alist[idx] % 2 == 0:
evenIntegers = evenIntegers + 1
idx += 1
print(evenIntegers)
使用for循环会更简单:
def count_evens_while(alist):
evenIntegers = 0
for el in alist:
if el % 2 == 0:
evenIntegers = evenIntegers + 1
print(evenIntegers)
使用一些列表理解甚至更简单:
def count_evens_while(alist):
evenIntegers = sum(1 for x in alist if (x%2 == 0))
print(evenIntegers)
答案 1 :(得分:0)
您根本不需要while
循环:
myList = []
size = int(input("How many integers do you want in your list? "))
for list in range(size):
element = int(input("Enter an integer to add to your list: "))
myList.append(element)
print(myList)
#a function that keeps count of all even integers using while loop
def count_evens_while(alist):
evenIntegers = 0
for element in alist:
if element % 2 == 0:
evenIntegers = evenIntegers + 1
return evenIntegers
print(count_evens_while(myList))
如果您需要提前停止for
循环,可以使用break
语句来摆脱循环。否则,一旦到达列表末尾,它将自动停止。它不需要手动给出结束条件。
答案 2 :(得分:0)
这与你的节目非常不同,但我希望能用它教你一些东西......首先,如果你需要的只是&#34;继续计算&#34;你真的不必将整数自己保存在列表中。这意味着你真正需要的就是这样:
count = 0
while True:
element = int(input("Enter an integer to add to your list: "))
if element % 2 == 0:
count += 1 # which is the same as count = count + 1
elif element == 9999:
break # user could enter 9999 to exit the loop
print('I have counted ' + str(count) + ' even numbers so far')
我希望这只是为了向您展示您不必使简单的事情复杂化
答案 3 :(得分:0)
这里有几个问题:
size
循环的头部定义while
。range
内置类作为整数值,这是没有意义的。 alist
。for
中不需要while
循环,因为您并未尝试在1
到{{1}之间找到每个数字的偶数},你试图找到element
中的所有偶数(大概)。以上修复内容如下:
alist
在def count_evens_while(alist):
evenIntegers = 0
size = 0
while size < len(alist):
if alist[size] % 2 == 0:
evenIntegers = evenIntegers + 1
size = size + 1
print(evenIntegers)
循环的第一部分:
while
我们告诉Python每次循环时将size < len(alist)
的值解析为size
的长度。然后,我们每次在循环中将alist
加1:
size
这基本上意味着循环的每次迭代,size = size + 1
的值将对应于size
的索引。当alist
到达size
的最后一个索引时,循环将停止。这是一个可以帮助解释的视觉示例。假设alist
alist
和[1, 2, 3]
最初等于size
:
0
下一个重要部分:
First iteration
alist = [1, 2, 3]
^
|
+--- size = 0
Second iteration
alist = [1, 2, 3]
^
|
+--- size = 1
Third (and last) iteration
alist = [1, 2, 3]
^
|
+--- size = 2
表示我们索引列表alist[size] % 2 == 0
。索引列表时,使用整数从整数对应的位置获取值。在这种情况下,alist
表示我们在值alist[size]
的位置获取整数的值。最后一部分:
size
意味着我们正在测试% 2 == 0
中位置size
处的整数是否为偶数。如果是,我们增加偶数的数量,如果不是,我们什么都不做。
您可以对当前的解决方案进行一些改进
alist
循环代替for
循环。这将是更自然的解决方案。while
。您可以使用增量运算符evenIntegers = evenIntegers + 1
代替。以下是适用于您的代码的上述改进:
+=
然而,这可以进一步改善!您不需要def count_evens_while(alist):
evenIntegers = 0
for element in alist:
if element % 2 == 0:
evenIntegers += 1
print(evenIntegers)
循环。您可以使用generator comprehension结合sum()
内置函数来计算for
中偶数的所有元素:
alist
我要批评你的代码的最后一件事是使用更好的变量名。使用准确描述变量代表内容的名称。例如,变量def count_evens_while(alist):
return sum(1 for el in alist if el % 2)
最好重命名为myList
。