鱼C论坛

 找回密码
 立即注册
查看: 1881|回复: 7

[已解决]Dictionary 以及for 循环求助

[复制链接]
发表于 2017-3-4 11:41:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. StudentPointsDic = {'Ludwig':[99,94,95,91,92],
  2.                     'Bertrand':[81,88,91,96,92],
  3.                     'Jean':[76,82,84,91,88],
  4.                     'Albert':[51,66,61,59,66],
  5.                     'Karl':[76,81,82,88,91],
  6.                     'Ayn':[91,88,88,86,90]}

  7. PercentPointDic = {}
  8. for v in StudentPointsDic:
  9.     Total = 0
  10.     for n in StudentPointsDic[v]:
  11.         Total = Total + n
  12.     PercentPoint = float(Total/500)
  13.     PercentPointDic[v] = PercentPoint

  14. for n in PercentPointDic:
  15.     if PercentPointDic[n] >= 0.93:#try {}
  16.         print(n,PercentPoint*100,'A')
  17.     elif PercentPointDic[n] >=0.9:
  18.         print(n,PercentPoint*100,'A-')
  19.     elif PercentPointDic[n] >= 0.87:
  20.         print(n,PercentPoint*100,'B+')
  21.     elif PercentPointDic[n] >= 0.83:
  22.         print(n,PercentPoint*100,'B')
  23.     elif PercentPointDic[n] >= 0.77:
  24.         print(n,PercentPoint*100,'C+')
复制代码



最后想输出每个根据不同分数对应的等级,但为什么结果出来却是
  1. Ludwig 88.6 A
  2. Karl 88.6 B
  3. Bertrand 88.6 B+
  4. Jean 88.6 B


  5. 人名出来了,分数却都一样?
  6. Ayn 88.6 B+
复制代码
最佳答案
2017-3-4 15:46:28
因为你的 print(n,PercentPoint*100,'A'),每个都打印的是PercentPoint*100,而上个循环结束后,得出的PercentPoint就是0.886,所以打印的都是88.6,每行改成print(n,PercentPointDic[n]*100)就可以了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-3-4 13:02:01 | 显示全部楼层
StudentPointsDic = {'Ludwig':[99,94,95,91,92],
                    'Bertrand':[81,88,91,96,92],
                    'Jean':[76,82,84,91,88],
                    'Albert':[51,66,61,59,66],
                    'Karl':[76,81,82,88,91],
                    'Ayn':[91,88,88,86,90]}

for key in StudentPointsDic.keys():
    if  sum(StudentPointsDic[key])/500 >= 0.93:
        m=sum(StudentPointsDic[key])/5
        print(key,m,'A')
    elif sum(StudentPointsDic[key])/500 >= 0.9:
         m=sum(StudentPointsDic[key])/5
         print(key,m,'A-')
    elif sum(StudentPointsDic[key])/500 >= 0.87:
         m=sum(StudentPointsDic[key])/5
         print(key,m,'B')
    elif sum(StudentPointsDic[key])/500 >= 0.83:
         m=sum(StudentPointsDic[key])/5
         print(key,m,'B-')
    elif sum(StudentPointsDic[key])/500 >= 0.77:
         m=sum(StudentPointsDic[key])/5
         print(key,m,'C+')
    这样可以显示你的要求。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-4 15:46:28 | 显示全部楼层    本楼为最佳答案   
因为你的 print(n,PercentPoint*100,'A'),每个都打印的是PercentPoint*100,而上个循环结束后,得出的PercentPoint就是0.886,所以打印的都是88.6,每行改成print(n,PercentPointDic[n]*100)就可以了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-4 17:29:33 | 显示全部楼层
将第二个for循环中的PercentPoint换为PercentPointDic[n]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-5 11:19:49 | 显示全部楼层
ap815 发表于 2017-3-4 13:02
StudentPointsDic = {'Ludwig':[99,94,95,91,92],
                    'Bertrand':[81,88,91,96,92],
   ...

谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-5 11:20:15 | 显示全部楼层
sss128 发表于 2017-3-4 15:46
因为你的 print(n,PercentPoint*100,'A'),每个都打印的是PercentPoint*100,而上个循环结束后,得出的Perce ...

谢谢,自己竟然犯如此低级错误还看不出来,忏愧!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-5 11:25:55 | 显示全部楼层
credentdj 发表于 2017-3-5 11:20
谢谢,自己竟然犯如此低级错误还看不出来,忏愧!

不用客气,互相学习,我们新手都会犯的错误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-5 11:39:01 | 显示全部楼层
五行缺五行 发表于 2017-3-4 17:29
将第二个for循环中的PercentPoint换为PercentPointDic[n]

谢谢,自己竟然犯如此低级错误还看不出来,忏愧!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-25 19:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表