「已注销」 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日

悬赏问题

  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答