首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >输入值后,最终输出不进行打印

输入值后,最终输出不进行打印
EN

Stack Overflow用户
提问于 2022-08-30 15:55:05
回答 2查看 58关注 0票数 2

我对python中的列表很陌生,我试图编写一个代码,其中一个人使用list输入10个数字,然后执行以下操作:

  • 将该数字复制到一个名为"EvenList“的新列表中,并输出该新列表。
  • 输出存储在新列表中的数字的平均值。

这是我的代码:

代码语言:javascript
运行
复制
List=[]
EvenList=[]
totalnum=0
count=0
for i in range(10):
    List.append(int(input("Enter a number: ")))
    
    while List[i]%2==0:
        EvenList.append(List[i])
        totalnum=totalnum+List[i]
        count=count+1


print(EvenList)
average=totalnum/count
print("Average: ", average)

每当我运行这个模块时,输入我的值之后,我的输出( EvenList和average)都不会被打印出来。这是我得到的输出:

示例1:

代码语言:javascript
运行
复制
Enter a number: 1
Enter a number: 2

示例2:

代码语言:javascript
运行
复制
Enter a number: 1
Enter a number: 1
Enter a number: 1
Enter a number: 1
Enter a number: 1
Enter a number: 1
Enter a number: 1
Enter a number: 1
Enter a number: 1
Enter a number: 2

通过进一步的分析,我意识到每当输入偶数时,代码就会给出一个空的输出。因此,我推测我的错误存在于第8-11行(可能还有更多)。

到目前为止,我改变了我的密码:List[i]=int(input("Enter a number: "))EvenList[index]=(List[i]),分别改为List.append(int(input("Enter a number: ")))EvenList.append(List[i]) --我仍然不明白为什么这些初始代码被认为是不正确的,因为我认为如果有人能解释的话,他们会做完全相同的事情,我会非常感激的--但这并没有纠正这个错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-30 16:01:38

这是因为在while循环条件下,如果数字甚至是无限循环,而不是while add,如果:

代码语言:javascript
运行
复制
List=[]
EvenList=[]
totalnum=0
count=0
for i in range(10):
    List.append(int(input("Enter a number: ")))
    
    if List[i]%2==0:
        EvenList.append(List[i])
        totalnum=totalnum+List[i]
        count=count+1


print(EvenList)
average=totalnum/count
print("Average: ", average)
票数 4
EN

Stack Overflow用户

发布于 2022-08-30 17:14:04

下面是使用列表理解、sum()len()作为创建EvenListtotalnumcountaverage的替代方法:

代码语言:javascript
运行
复制
List = [int(input("Enter a number: ")) for i in range(10)]
EvenList = [i for i in List if i % 2 == 0]
average = sum(EvenList)/len(EvenList)
print(EvenList); print("Average: ", average)

或列表理解中的列表理解

代码语言:javascript
运行
复制
EvenList = [i for i in [int(input("Enter a number: ")) for i in range(10)] if i % 2 == 0]
average = sum(EvenList)/len(EvenList)
print(EvenList); print("Average: ", average)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73545286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档