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))

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

except的情况不用再输入数据了 给你改好了

img

img


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

代码异常捕获部分这样改写即可:

a1=[]
for i in range(x):
    try:
        a=eval(input("请输入第{}位评委的分数:".format(i+1)))
        assert a>=0 and a<=100
        a1.append(a)
    except:
        print("打分请在0-100分内,请重新打分")
        a = eval(input("请输入第{}位评委的分数:".format(i+1)))
        a1.append(a)
print(a1)

F:\2022\py01>t11
评委人数4
请输入第1位评委的分数:123 
打分请在0-100分内,请重新打分
请输入第1位评委的分数:12
请输入第2位评委的分数:0.5
请输入第3位评委的分数:22
请输入第4位评委的分数:120
打分请在0-100分内,请重新打分
请输入第4位评委的分数:50
[12, 0.5, 22, 50]

如有帮助,请点采纳 。

可以

except:
  pass

1、你的代码问题出在 a=input("请输入第{}位评委的分数:".format(i + 1))
输入后代码没走到if判断内,因为a的数据类型为字符串str,所以不符合判断,应加int进行数据类型转换,改为a=int(input("请输入第{}位评委的分数:".format(i + 1)))
2、应该把except中的input直接换成continue即可,若不符合条件则会自动结束当次循环开始下一次循环

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632