鱼C论坛

 找回密码
 立即注册
查看: 2237|回复: 1

[已解决]求助,我这样写的问题在哪里呢

[复制链接]
发表于 2022-10-24 17:35:55 | 显示全部楼层 |阅读模式

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

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

x
题目描述
光明正大担任了理科数学分析的课程助教,期中模拟考试后,需要帮助老师分析处理n个学生的成绩,涉及以下四种操作: 1.查询第x个学生的成绩; 2.查询前x个学生中最高的成绩; 3.在所有学生后新加入一名同学的成绩x; 4.删除第x个同学的成绩; 5.查询是否存在成绩为x的同学。 由于老师非常关心同学们的成绩情况,向助教询问了很多次成绩情况,然而光明正大还需要为同学们答疑,于是他找到了你,希望你能帮忙设计一个成绩管理系统以回复老师的查询。

输入
第一行包含若干个不超过100的正整数,依次表示学生们的初始成绩,以空格分隔。 后面若干行,每行输入两个数字,空格分隔,依次为操作标识opt,具体操作x: 若opt=1,第二个数字x表示查询当前序列中第x个同学的成绩; 若opt=2,第二个数字x表示查询前x个学生中最高的成绩; 若opt=3,第二个数字x表示在所有学生后加入一名同学成绩为x; 若opt=4,第二个数字x表示删除第x个同学的成绩; 若opt=5,第二个数字x表示查询是否存在成绩为x的同学; 最后一行,包括两个数字,空格分隔,第一个数字为操作标识opt,为-1,第二个数字x没有其他含义,表示老师操作结束,应该终止程序。 输入保证合法。

输出
对于每个opt=1,输出一行一个正整数,表示当前序列中第x个同学的成绩; 对于每个opt=2,输出一行一个正整数,表示前x个学生中最高的成绩; 对于每个opt=3或opt=4,不需要输出; 对于每个opt=5,输出一行一个数,1代表存在成绩为x的同学,0代表不存在。

输入样例1
95 80 90 100
1 2
2 3
4 2
5 80
-1 -1

输出样例1
80
95
0

输入样例2
59 60 58 99 98
2 5
3 100
2 6
5 100
1 3
-1 -1

输出样例2
99
100
1
58

样例解释
第一行输入代表一共有四个同学的成绩,分别是95,80,90,100。 第二行输入“1 2”代表第一种操作,查询第二个同学的成绩,则输出80。 第三行输入“2 3”代表第二种操作,查询前三个同学中最高的成绩,则输出95。 第四行输入“4 2”代表第四种操作,删除第二个同学的成绩,故无输出。 第五行输入“5 80”代表第五种操作,查询成绩为80的同学是否存在,因其在上一次操作中已经被删除,故输出0。 第六行输入的第一个数字为终止符“-1”,故程序结束。

lis=list(map(int,input().split()))
opt,x=map(int,input().split())
ans[]
while opt>0 and opt<6:
  if opt==1:
    a=int(lis[x-1])
    ans.append(a)
  elif opt==2:
    b=max(lis[:x-1])
    ans.append(b)
  elif opt==3:
    lis.append(x)
  elif opt==4:
    lis.remove(x-1)
  elif opt==5:
    if x in lis:
      ans.append("1")
    else:
      ans.append("0")
for i in ans:
  print(i)
最佳答案
2022-10-24 18:17:41
本帖最后由 jackz007 于 2022-10-24 18:20 编辑
d = list(map(int,input().split()))
while True: 
    opt , x = map(int,input().split())
    if opt > 0 and opt < 6:
        if opt == 1 :
            print(d[x - 1])
        elif opt == 2 :
            print(max(d[: x]))
        elif opt == 3 :
            d . append(x)
        elif opt == 4 :
            d . pop(x - 1)
        elif opt == 5:
            if x in d:
                print(1)
            else :
                print(0)
    elif opt == -1 : break
    else : print('无效的操作,请你重新输入。\n')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-24 18:17:41 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-10-24 18:20 编辑
d = list(map(int,input().split()))
while True: 
    opt , x = map(int,input().split())
    if opt > 0 and opt < 6:
        if opt == 1 :
            print(d[x - 1])
        elif opt == 2 :
            print(max(d[: x]))
        elif opt == 3 :
            d . append(x)
        elif opt == 4 :
            d . pop(x - 1)
        elif opt == 5:
            if x in d:
                print(1)
            else :
                print(0)
    elif opt == -1 : break
    else : print('无效的操作,请你重新输入。\n')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 23:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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