use*_*832 -1 python while-loop python-3.x
我是一个Python学习者,我的代码似乎在同时进行无限循环表达式中进行了无限循环,但我不明白为什么。
我想要的是一个程序来计算此列表中前五个奇数的总和。
这是 Udacity 网站上的一个非常基本的练习,输出是程序因使用 13 CPU 秒而关闭,并且在 Windows python3 中它不显示任何输出。经过一些测试,我怀疑是while表达式中的无限循环有问题。
num_list = [422, 136, 524, 85, 96, 719, 85, 92, 10, 17, 312, 542, 87, 23, 86, 191, 116, 35, 173, 45, 149, 59, 84, 69, 113, 166]
z=0
s=0
for i in range(len(num_list)):
while z<=5:
if num_list[i]%2==1:
z+=1
s+=num_list[i]
print(s)
Run Code Online (Sandbox Code Playgroud)
遵循您的代码
0422 zfor i in range(len(num_list)):
while z <= 5:
if num_list[i] % 2 == 1:
Run Code Online (Sandbox Code Playgroud)
解决方案 1:不要使用 2 个循环(while 和 for),因为您想做两件事:迭代值并检查 5 个条件。break当你有五个时,你可以只使用一个
for i in range(len(num_list)):
if num_list[i] % 2 == 1:
z += 1
s += num_list[i]
if z >= 5:
break
Run Code Online (Sandbox Code Playgroud)
解决方案 2:使用不同的逻辑
r = sum(list(filter(lambda i: i % 2 == 1, num_list))[:5])
Run Code Online (Sandbox Code Playgroud)