鱼C论坛

 找回密码
 立即注册
查看: 3121|回复: 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 编辑
#设定总人数
num = int(input('当前录入科目为C,请输入学生人数:'))
#输入学生信息
a = ()
b = ()
for i in range(num):
    name = input('姓名:')
    garde = int(input('分数:'))
    a += (name,)
    b += (garde,)
c = sorted(b,reverse=True)
#奖学金发放比例
G1 = int(input('请输入获得一等奖学金的学生比例(%):'))
G2 = int(input('请输入获得二等奖学金的学生比例(%):'))
G3 = int(input('请输入获得三等奖学金的学生比例(%):'))
#输入查询学生姓名然后输出结果
while 1:
    Name = input('请输入想要查询的学生姓名')
    if Name == '退出':
        break
    else:
        if Name not in a:
            print('姓名错误,请重新输入')
        else:
            rank = c.index(b[a.index(Name)])
            print(rank+1,'/',num,end = ',')
            if rank <= num * G1 / 100:
                print('一等奖学金')
            elif rank <= num*G2/100:
                print('二等奖学金')
            elif rank <= num*G3/100:
                print('三等奖学金')
            else:
                print('NO')


我也是刚开始学的,不造这个是不是你说的那个意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-12-11 19:02:00 | 显示全部楼层
如何在同一行中读取两个变量(是的我连这个也不会)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-11 19:21:29 | 显示全部楼层
你可以参考一下这个例子
>>> input().split()
1 2
['1', '2']
>>> a, b = input().split()
1 2
>>> a
'1'
>>> b
'2'
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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


N, c = input().split()
n = int(N)
dict1 = {}
xm = ""
cj = 0
score = []
for i in range(n):
    temp = input()
    for ii in temp:  # 读取每行字符串
        if '0' <= ii <= '9':
            cj = cj * 10 + int(ii)
        elif ii == ' ':
            score[i] = score[i] + cj
            cj = 0
        else:
            xm = xm + ii
    dict1[xm] = score[i]
    xm = ""

x = input()  # 读取奖学金分段
i = 1
g = []
index = 0
for t in x:
    if '0' <= t <= '9':
        index = index * 10 + int(t)
    elif t != ' ':
        g[i] = index
        index = 0
        i += 1

name = input()
i = 0
for item in dict1.items():
    if item == name:
        cj = dict1.get(name)
pm = 1
for value in dict1.values():
    if value > cj:
        pm += 1
jxj = ""
if pm / n < g[1] / 100:
    jxj = "1"
elif pm / n < g[2] / 100:
    jxj = "2"
elif pm / n < g[3] / 100:
    jxj = "3"
else:
    jxj = "NO"

print("%d/%d,%s" % (pm, n, jxj))
为何抛出列表超程?第一个循环只执行了一次就不行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-11 20:14:47 | 显示全部楼层    本楼为最佳答案   
本帖最后由 梦难醒 于 2022-12-11 20:22 编辑
#设定总人数
num = int(input('当前录入科目为C,请输入学生人数:'))
#输入学生信息
a = ()
b = ()
for i in range(num):
    name = input('姓名:')
    garde = int(input('分数:'))
    a += (name,)
    b += (garde,)
c = sorted(b,reverse=True)
#奖学金发放比例
G1 = int(input('请输入获得一等奖学金的学生比例(%):'))
G2 = int(input('请输入获得二等奖学金的学生比例(%):'))
G3 = int(input('请输入获得三等奖学金的学生比例(%):'))
#输入查询学生姓名然后输出结果
while 1:
    Name = input('请输入想要查询的学生姓名')
    if Name == '退出':
        break
    else:
        if Name not in a:
            print('姓名错误,请重新输入')
        else:
            rank = c.index(b[a.index(Name)])
            print(rank+1,'/',num,end = ',')
            if rank <= num * G1 / 100:
                print('一等奖学金')
            elif rank <= num*G2/100:
                print('二等奖学金')
            elif rank <= num*G3/100:
                print('三等奖学金')
            else:
                print('NO')


我也是刚开始学的,不造这个是不是你说的那个意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

感谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 09:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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