Python试题

文章讲述了大学实行的学分制学费计算方法,包括理论教学学分学费标准和基础学年学费,以及如何计算小明第一学年的总学分和学费。同时介绍了姓名加密函数和教务系统中对用户信息的查询、添加、删除操作。最后,涉及了使用集合操作统计参加秋游活动的学生费用情况。
摘要由CSDN通过智能技术生成

1. (简答题)

某大学实行学分制学费收费方法:学分制学费分为理论教学学分学费和基础学年学费,理论教学学分学费实行统一的标准,均为70.86元/学分。基础学年学费为2500元。

学年正常修读课程学费=基础学年学费+所修总学分x70.86

小明第一学年需修读的课程及学分如下表所示:

1.请用python计算并输出小明第一学年共修多少学分?输出格式为“本学年应修x个学分。”,输出结果保留两位小数。(5分)

2.用户输入每学分应缴纳的学费,计算并输出第一学年应缴纳多少学费?输出格式为“本学年应缴纳的学费为y元。”,输出结果保留两位小数。(10分)

(请将代码直接粘贴到答题框,并将运行结果截图上传。)

#所修课程及学分
crs_python = 3
crs_computer = 2
crs_heightmath = 3
crs_english = 3
crs_pe = 1
crs_anquan = 0.2

#计算第一学年应修总学分
total_crs = crs_python + crs_computer + crs_heightmath + crs_english + crs_pe + crs_anquan
print("本学年应修{:.2f}个学分。".format(total_crs))

#输入每学分学费
mei_crs = float(input("请输入每学分应缴纳的学费:"))

#计算第一学年学费
total_xfei = 2500 + (total_crs * mei_crs)
print("本学年应缴的学费为{:.2f}元。".format(total_xfei))

2. (简答题)

为了保护学生的个人信息安全,请定义一个姓名加密(有参)函数,实现以下功能:

若接收的姓名为非中文时,会触发Error,输出'必须输入中文姓名'(10分)。提示:中文字符的最小编码范围为u'\u4e00',最大编码范围为u'\u9fff'。

若接收的姓名为中文时,执行以下操作进行姓名加密:若姓名为2个字,将第二个字符用*替代(5分);若姓名为3个字或3个字以上,将除姓和最后一个字符以外的字符用*替代(5分)。

测试:当用户输入张三,则输出张*;当用户输入李小四,则输出李*四;当用户输入司马相如,则输出司**如。当用户输入非中文姓名,则输出必须输入中文姓名。

def encrypt_chinese_name(name):

    for char in name:

        if not ('\u4e00' <= char <= '\u9fff'):

            raise ValueError("必须输入中文姓名")

    if len(name) == 2:

        encrypted_name = name[0] + "*"

    elif len(name) >= 3:

        encrypted_name = name[0] + "*" * (len(name)-2) + name[-1]

    else:

        encrypted_name = name

    return encrypted_name

# 测试

try:

    name = input("请输入中文姓名:")

    encrypted_name = encrypt_chinese_name(name)

    print("加密后的姓名为:", encrypted_name)

except ValueError as ve:

    print(ve)

3. (简答题)

学校的教务系统的将学生的用户名和密码存在possword.txt文件中:

请补充程序,实现读取文件,并对用户和密码进行查询、添加、删除、等操作。(30分)

(请将代码粘贴到答题框,不要截图)

程序中有如下功能选项:

  1. 用户查询功能:

  2. 用户添加功能

  3. 用户删除功能

  4. 查看全部用户及密码后,退出系统功能。

当用户输入1,输入用户姓名后,若用户存在,则显示密码;若用户不存在,显示用户不存在不能查询。

当用户输入2,输入用户姓名和密码后,若用户存在,显示用户已存在无法增加;若用户不存在,则将用户名和密码追加到相应的列表或字典中,并显示用户已增加。

当用户输入3,输入用户姓名后,若用户存在,则将用户名和密码删除,并显示用户已删除。若用户不存在,显示用户不存在不能删除。

当用户输入4,则显示全部用户名和密码信息,并退出循环

请补充完整以下代码,实现以上功能:

with open("possword.txt",encoding="utf-8")) as f1:

#补充代码段1:实现读取文件内容,将用户和密码信息转换为列表或字典对象。

#代码结束

print("请选择:1 用户查询、2 用户增加、3 用户删除 4 查看数据,退出系统")

#补充代码段2:对用户和密码进行增加、删除、查询等操作

#代码结束

with open("possword.txt", encoding="utf-8") as f1:

    lines = f1.readlines()

    user_dict = {}

    for line in lines:

        if ":" in line:

            user, password = line.strip().split(":")

            user_dict[user] = password

while True:

    print("请选择:1 用户查询、2 用户增加、3 用户删除 4 查看数据,退出系统")

    choice = input("请输入数字选择功能:")

    if choice == "1":

        username = input("请输入用户名:")

        if username in user_dict:

            print(f"用户密码是:{user_dict[username]}")

        else:

            print("用户不存在,无法查询。")

    elif choice == "2":

        username = input("请输入用户名:")

        if username in user_dict:

            print("用户已存在,无法增加。")

        else:

            password = input("请输入密码:")

            user_dict[username] = password

            with open("possword.txt", "a", encoding="utf-8") as f2:

                f2.write(f"{username}:{password}\n")

            print("用户已增加。")

    elif choice == "3":

        username = input("请输入用户名:")

        if username in user_dict:

            del user_dict[username]

            with open("possword.txt", "w", encoding="utf-8") as f3:

                for user, password in user_dict.items():

                    f3.write(f"{user}:{password}\n")

            print("用户已删除。")

        else:

            print("用户不存在,无法删除。")

    elif choice == "4":

        print("所有用户及其密码信息如下:")

        for user, password in user_dict.items():

            print(f"{user}:{password}")

        break

    else:

        print("输入有误,请重新输入。")

4. (简答题)

班级有30个学生,报名参加两个秋游活动。

参加秋游1需缴纳50元,参加秋游2需缴纳30元。学生可以参加两项秋游,也可以不参加任何秋游。

参加秋游1的名单放在秋游1.txt中,

参加秋游2的名单放在秋游2.txt中,

全体成员的名单放在“班级名单.txt”中。

计算并显示缴纳80元的、50元的、30元的及不需交纳金额的学生名单及人数。(30分)

提示:使用集合的特性对数据进行处理。

file1=open("秋游1.txt",encoding="utf-8")

file2=open("秋游2.txt",encoding="utf-8")

file3=open("班级名单.txt",encoding="utf-8")

li1=file1.read().strip('\n').split(' ')

hd1=set(li1)  

li2=file2.read().strip('\n').split(' ')

hd2=set(li2) 

li3=file3.read().strip('\n').split(' ')

qb=set(li3)

hd3=hd1&hd2

hd4=hd1-hd2

hd5=hd2-hd1

hd6=qb-(hd1|hd2) 

print("80元",hd3)

print("50元",hd4)

print("30元",hd5)

print("无需交款",hd6)

print("80元{}人".format(len(hd3)))

print("50元{}人".format(len(hd4)))

print("30元{}人".format(len(hd5)))

print("无需交款{}人".format(len(hd6)))

file1.close()

file2.close()

file3.close()

二. 填空题(共1题,20分)

5. (填空题)

使用for循环语句计算1+2+3+4+...+2020的值。

补充完整以下代码实现该功能:

s=0  

for i in________:#1.补充循环条件

    _____________#2.进行数值计算

print(s) 

第一空:range (1,2021)

第2空:s += i

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值