鱼C论坛

 找回密码
 立即注册
查看: 3746|回复: 5

[已解决]作业求救

[复制链接]
发表于 2022-12-11 18:54:47 | 显示全部楼层 |阅读模式

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

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

x
屏幕截图 2022-12-11 185149.png
老师布置的c语言作业,我想尝试用新学的Py解题。
尝试失败
最佳答案
2022-12-11 20:14:47
本帖最后由 梦难醒 于 2022-12-11 20:22 编辑
  1. #设定总人数
  2. num = int(input('当前录入科目为C,请输入学生人数:'))
  3. #输入学生信息
  4. a = ()
  5. b = ()
  6. for i in range(num):
  7.     name = input('姓名:')
  8.     garde = int(input('分数:'))
  9.     a += (name,)
  10.     b += (garde,)
  11. c = sorted(b,reverse=True)
  12. #奖学金发放比例
  13. G1 = int(input('请输入获得一等奖学金的学生比例(%):'))
  14. G2 = int(input('请输入获得二等奖学金的学生比例(%):'))
  15. G3 = int(input('请输入获得三等奖学金的学生比例(%):'))
  16. #输入查询学生姓名然后输出结果
  17. while 1:
  18.     Name = input('请输入想要查询的学生姓名')
  19.     if Name == '退出':
  20.         break
  21.     else:
  22.         if Name not in a:
  23.             print('姓名错误,请重新输入')
  24.         else:
  25.             rank = c.index(b[a.index(Name)])
  26.             print(rank+1,'/',num,end = ',')
  27.             if rank <= num * G1 / 100:
  28.                 print('一等奖学金')
  29.             elif rank <= num*G2/100:
  30.                 print('二等奖学金')
  31.             elif rank <= num*G3/100:
  32.                 print('三等奖学金')
  33.             else:
  34.                 print('NO')
复制代码



我也是刚开始学的,不造这个是不是你说的那个意思
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-12-11 19:02:00 | 显示全部楼层
如何在同一行中读取两个变量(是的我连这个也不会)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-11 19:21:29 | 显示全部楼层
你可以参考一下这个例子
  1. >>> input().split()
  2. 1 2
  3. ['1', '2']
  4. >>> a, b = input().split()
  5. 1 2
  6. >>> a
  7. '1'
  8. >>> b
  9. '2'
  10. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-12-11 20:00:18 | 显示全部楼层
  1. def __getitem__(self, key):
  2.     return self.data[key]


  3. N, c = input().split()
  4. n = int(N)
  5. dict1 = {}
  6. xm = ""
  7. cj = 0
  8. score = []
  9. for i in range(n):
  10.     temp = input()
  11.     for ii in temp:  # 读取每行字符串
  12.         if '0' <= ii <= '9':
  13.             cj = cj * 10 + int(ii)
  14.         elif ii == ' ':
  15.             score[i] = score[i] + cj
  16.             cj = 0
  17.         else:
  18.             xm = xm + ii
  19.     dict1[xm] = score[i]
  20.     xm = ""

  21. x = input()  # 读取奖学金分段
  22. i = 1
  23. g = []
  24. index = 0
  25. for t in x:
  26.     if '0' <= t <= '9':
  27.         index = index * 10 + int(t)
  28.     elif t != ' ':
  29.         g[i] = index
  30.         index = 0
  31.         i += 1

  32. name = input()
  33. i = 0
  34. for item in dict1.items():
  35.     if item == name:
  36.         cj = dict1.get(name)
  37. pm = 1
  38. for value in dict1.values():
  39.     if value > cj:
  40.         pm += 1
  41. jxj = ""
  42. if pm / n < g[1] / 100:
  43.     jxj = "1"
  44. elif pm / n < g[2] / 100:
  45.     jxj = "2"
  46. elif pm / n < g[3] / 100:
  47.     jxj = "3"
  48. else:
  49.     jxj = "NO"

  50. print("%d/%d,%s" % (pm, n, jxj))
复制代码

为何抛出列表超程?第一个循环只执行了一次就不行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-11 20:14:47 | 显示全部楼层    本楼为最佳答案   
本帖最后由 梦难醒 于 2022-12-11 20:22 编辑
  1. #设定总人数
  2. num = int(input('当前录入科目为C,请输入学生人数:'))
  3. #输入学生信息
  4. a = ()
  5. b = ()
  6. for i in range(num):
  7.     name = input('姓名:')
  8.     garde = int(input('分数:'))
  9.     a += (name,)
  10.     b += (garde,)
  11. c = sorted(b,reverse=True)
  12. #奖学金发放比例
  13. G1 = int(input('请输入获得一等奖学金的学生比例(%):'))
  14. G2 = int(input('请输入获得二等奖学金的学生比例(%):'))
  15. G3 = int(input('请输入获得三等奖学金的学生比例(%):'))
  16. #输入查询学生姓名然后输出结果
  17. while 1:
  18.     Name = input('请输入想要查询的学生姓名')
  19.     if Name == '退出':
  20.         break
  21.     else:
  22.         if Name not in a:
  23.             print('姓名错误,请重新输入')
  24.         else:
  25.             rank = c.index(b[a.index(Name)])
  26.             print(rank+1,'/',num,end = ',')
  27.             if rank <= num * G1 / 100:
  28.                 print('一等奖学金')
  29.             elif rank <= num*G2/100:
  30.                 print('二等奖学金')
  31.             elif rank <= num*G3/100:
  32.                 print('三等奖学金')
  33.             else:
  34.                 print('NO')
复制代码



我也是刚开始学的,不造这个是不是你说的那个意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-11 20:29:30 | 显示全部楼层
梦难醒 发表于 2022-12-11 20:14
我也是刚开始学的,不造这个是不是你说的那个意思

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 15:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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