请问要如何修改才能让打分在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))
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
except的情况不用再输入数据了 给你改好了
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即可,若不符合条件则会自动结束当次循环开始下一次循环