鱼C论坛

 找回密码
 立即注册
查看: 2040|回复: 7

[已解决]请问这个代码错在哪

[复制链接]
发表于 2021-12-7 20:20:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
实在找不出来
代码如下:
a=eval(input())
count=0
sum=0
while a!="":
    sum=sum+a
    count=count+1
    eva=sum/count
    a=eval(input())
print("该歌手的最终成绩为:{}".format(eva))
最佳答案
2021-12-8 09:36:46
错在:eval在处理空字符串时会返回EOF错误。在循环里面a=eval(input()),输入空时,报错出不来了。
所以用一个try..except,在输入空时让程序继续处理。(下面是用的你的原代码)
  1. a = eval(input())
  2. count1 = 0
  3. sum1 = 0
  4. while a != "":
  5.     try:
  6.         a = eval(input())
  7.         sum1 = sum1+a
  8.         count1 = count1+1
  9.         eva = sum1/count1
  10.     except:
  11.         break
  12. print("该歌手的最终成绩为:{:.1f}".format(eva))
复制代码
9c29dbf790c157ef71b5c24ab872268.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-12-7 20:49:39 | 显示全部楼层
为什么要用eval?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-7 21:22:47 | 显示全部楼层

比较帅吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-7 21:25:17 | 显示全部楼层
本帖最后由 jackz007 于 2021-12-7 21:26 编辑
  1. c , d = 0 , 0
  2. while True:
  3.     x = input() . strip()
  4.     if x:
  5.         c , d = c + 1 , d + eval(x)
  6.     else:
  7.         break
  8. print("该歌手的最终成绩为:{:.1f}".format(d / c))
复制代码

        运行实况:
  1. D:\00.Excise\Python>python x.py
  2. 10
  3. 8.5
  4. 9.4
  5. 6.7
  6. 8

  7. 该歌手的最终成绩为:8.5

  8. D:\00.Excise\Python>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-7 21:32:01 | 显示全部楼层
  1. score = []
  2. while True:
  3.     try:
  4.         s = input()
  5.         score.append(float(s))
  6.     except:
  7.         break
  8. print(f"该歌手最终成绩为{sum(score)/len(score):.1f}")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-7 22:21:12 | 显示全部楼层

所以我的代码是错在哪呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-8 09:22:45 | 显示全部楼层
  1. sum = 0
  2. lind = 0
  3. while True:
  4.     number = input()
  5.     if number=="":
  6.         break
  7.     else:
  8.         lind+=1
  9.         sum+=float(number)
  10. print("该歌手最终成绩为{:.1f}".format(sum/lind))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-8 09:36:46 | 显示全部楼层    本楼为最佳答案   
错在:eval在处理空字符串时会返回EOF错误。在循环里面a=eval(input()),输入空时,报错出不来了。
所以用一个try..except,在输入空时让程序继续处理。(下面是用的你的原代码)
  1. a = eval(input())
  2. count1 = 0
  3. sum1 = 0
  4. while a != "":
  5.     try:
  6.         a = eval(input())
  7.         sum1 = sum1+a
  8.         count1 = count1+1
  9.         eva = sum1/count1
  10.     except:
  11.         break
  12. print("该歌手的最终成绩为:{:.1f}".format(eva))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 19:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表