PandaLi 发表于 2020-5-7 14:57

急求python题

求大神看看代码该怎么写 或者我写的错在了哪里?
#统计分析成绩I
n=input()
print("平均成绩:{:.2f}".format(sum(eval(n))/20))
a=0
b=0
c=0
d=0
e=0
for i in n:
    if i>90:
      a=a+1
      a1=(a/20)*100
    elif 80<=i<=89:
      b=b+1
      b1=(b/20)*100
    elif 70<=i<=79:
      c=c+1
      c1=(c/20)*100
    elif 60<=i<=69:
      d=d+1
      d1=(d/20)*100
    else:
      e=e+1
      e1=(e/20)*100
print("60分以下{}人,占总人数的{}%\n69~60分{}人,占总人数的{}%\n79~70分{}人,占总人数的{}%\n89~80分{}人,占总人数的{}%\n90分以上{}人,占总人数的{}%".format(e,e1,d,d1,c,c1,b,b1,a,a1))

corch 发表于 2020-5-7 15:16

楼主你好。你的代码第一行,n=input()得到的n是一个字符串,应该先把n转换成整数类型的list,再来求平均值、各分段占比以及排序。
可以将第一行换成n=,就可以把n换成int类型的list的了。

听雨在哭泣 发表于 2020-5-7 15:19

n是字符串,i=90的时候好像也没有考虑到

Jgplus 发表于 2020-5-7 15:20

Jgplus 发表于 2020-5-7 15:28

huanwuying 发表于 2020-5-7 15:34

i获取到的数据类型是字符,同数字没有办法比较大小,可以转换一下吧:n = eval(n)

zucker 发表于 2020-5-7 16:08

输入不是数字咋办?继续优化代码

王星星 发表于 2020-5-7 16:32

随遇而安8 发表于 2020-5-7 17:35

ForXuān 发表于 2020-5-7 15:28
n=input()
print("平均成绩:{:.2f}".format(sum(eval(n))/20))
a=b=c=d=e=0


问一下,eval函数是能把用“,”隔开的字符串转换为一个元组吗?

corch 发表于 2020-5-7 17:54

本帖最后由 corch 于 2020-5-7 21:25 编辑

随遇而安8 发表于 2020-5-7 17:35
问一下,eval函数是能把用“,”隔开的字符串转换为一个元组吗?

eval() 函数的作用是用来执行一个字符串表达式,并返回表达式的值;并且如果这个字符串中的数字以','隔开,eval()会理解为是多个表达式,然后返回多个表达式的结果的元组;如果表达式是数字,结果就是数字本身。
所以,eval('1,2,3,4,5,6,7,8,9,10')得到的结果是(1,2,3,4,5,6,7,8,9,10)
另外
m=n.split(',')这一句可以把用“,”隔开的字符串转换为列表。
页: [1] 2
查看完整版本: 急求python题