「已注销」 2022-04-29 13:10 采纳率: 79.3%
浏览 55
已结题

python捕获异常语句的问题

img

请问要如何修改才能让打分在0-100分内不触发except

try:
#可能出现的错误代码
x=int(input("评委人数"))
assert x>2
except ValueError:
print("必须为整数")
except:
print("人数必须大于2")
a1=[]
for i in range(x):
try:
a=input("请输入第{}位评委的分数:".format(i+1))
assert a>=0 and a<=100
a1.append(a)
print(a1[i])
except:
print("打分请在0-100分内,请重新打分")
a=input("请输入第{}位评委的分数:".format(i+1))

max =a1[0]
min=a1[0]
for i in range (1,x):
if a1[i]>=max:
max=a1[i]
elif a1[i]<=min:
min=a1[i]
a1.remove(max)
a1.remove(min)
print(a1)
s=0
for i in range(x-2):
s+=int(a1[i])
average=s/(i+1)
print(round(average,1))

  • 写回答

6条回答 默认 最新

  • 关注

    input()输入的是字符串,字符串不能和数值比较,应该用int()或float()转成数值
    改为

        a=float(input("请输入第{}位评委的分数:".format(i+1)))
    

    你题目的解答代码如下:

    try:
        #可能出现的错误代码
        x=int(input("评委人数"))
        assert x>2
    except ValueError:
        print("必须为整数")
    except:
        print("人数必须大于2")
    else:  # 评委人数正确才执行下边代码
        a1=[]
        for i in range(x):
            while True:  # 加个while循环,当输入不在0-100分内,要重新输入这个评委的分数, 不加while循环,再重新输入的是下一个评委的分数, 
                try:
                    a=float(input("请输入第{}位评委的分数:".format(i+1))) #用float()转成数值
                    assert a>=0 and a<=100
                    a1.append(a)
                    print(a1[i])
                    break
                except:
                    print("打分请在0-100分内,请重新打分")
    
        a1.remove(max(a1))
        a1.remove(min(a1))
        print(a1)
        average=sum(a1)/len(a1)
        print(round(average,1))
    

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 5月10日
  • 已采纳回答 5月2日
  • 创建了问题 4月29日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装