第二周测试题

一.理论题

1.尽可能多的列举python字符串类型操作⽅法(⽅法名称+功能介绍)

info = "hello word"
print(info[6])  # w 根据索引取值
print(info[-1])  # d 根据索引取值
print(info[:5])  # hello 切片 顾头不顾尾
print(info[:5:2])  # hlo 切片 顾头不顾尾 +步长
print(info[::-1])  # drow olleh 示从右往左依次取值
print(len(info))  # 10 取字符串的长度
print((info.strip()))  # 移除字符串首尾的空格 \t \n  也可以添加参数 指定移除字符串两边的值
print(info.lstrip())  # 移除字符串左边的字符  功能和参数同split
print(info.rsplit())  # 移除字符串右边的字符  功能和参数同split
print(info.replace("ll", "kk"))  # hekko word
print(info.lower())  # hello word
print(info.upper())  # HELLO WORD
print(info.startswith("h"))  # True
print(info.endswith("d"))  # True
print("|".join(info))  # h|e|l|l|o| |w|o|r|d
print(info.split())  # ['hello', 'word'] 分割成列表
print(info.rsplit())  # ['hello', 'word'] 分割成列表 从右边分割 可以指定分割次数
print(info.isdigit())  # 判断是否数字
print(info.capitalize()) #首字母大写
print(info.swapcase()) #大小写互换
print(info.title()) # Hello Word
# 字符串中: 查找的方法
for i in info:
    print(i)  # 通过遍历查找 字符串
if "h" in info:
    pass  # 通过in查找"h"是否在字符串中
if info.find("h") != -1:
    print("h在")
print(info.count("h"))  # 统计重复次数
info = "1"
print(info.center(8, "0"))
print(info.rjust(8, "*"))
print(info.zfill(8))  # 可以设置员工编号
info="开心    开年  开心  开年  开心  开年"
print(info)
print(info.expandtabs(0)) #修改制表符 0代表替换制表符"" 1代表制表符" "
info="开心    开年  开心  开年  开心  开年"
print(info.replace("\t",""))

2.尽可能多的列举python列表类型操作⽅法(⽅法名称+功能介绍

lis = [8, "6", 9, 9]
# 通过list 可以把可变类型转化成列表
print(list(range(10)))  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 添加
lis.append("10")  # 末尾添加10
lis.insert(0, 15)  #
lis1 = [10, 11]
lis.extend(lis1)  # 列表的合并
print(lis)
# 删
del lis[3]  # 3为索引
lis.pop()  # 括号内为索引,默认为最后一个
lis.remove(8)  # 元素名称删除  只删除一个
print(lis)
# 改
lis[1] = "kaxin"  # 通过索引进行修改
print(lis)
# 查
print(lis[1])  # 通过索引进行查询
for i in lis:
    print(i)  # 通过循环进行遍历查询
if 10 in lis:
    print("真")  # 通过in 查看列表是否有某个元素
# 其他:
print(lis.count(9))  # 列表元素重复次数
lis = [11, 55, 66, 22, 33]
lis.reverse()  #颠倒列表的元素的顺序
print(lis)
a=lis[::-1]
print(a)
lis.sort(reverse=True)  #排序
print(lis)
​

诠释什么是可变类型与不可变类型

可变数据类型:值发生改变时,内存地址不变,即id不变,证明在改变原值
不可变类型:值发生改变时,内存地址也发生改变,即id也变,证明是没有在改变原值,是产生了新的值

什么是队列与堆栈,能否⽤列表模拟⼀下各⾃特征

队列:
li=[]
print(li)
for i in range(5):
    li.append(i)
    print(li)
for i in range(len(li)):
    li.pop()
    print(li)
    栈:
li=[]
for i in range(5):
    li.append(i)
    print(li)
for i in range(len(li)):
    li.pop(0)
    print(li)

尽可能多的列举python字典类型操作⽅法(⽅法名称+功能介绍

dic = {"name": "lgj", "age": "28"}
# 增
dic["male"] = "男"
print(dic)
dic.setdefault("爱好","玩游戏")
print(dic) #setdefault key存在就返回key的values key不存在就添加成功 返回添加信息的 values
# 删除
dic.pop("爱好")
print(dic)
del dic["male"]
print(dic)
dic.popitem()
print(dic)   #删除最后一个
#改
dic["name"]="lll"
print(dic)
dic.update({"age":30})    #用新字典修改旧字典,如果
print(dic)
#查:
k=dic.get("name1","不存在")
print(k)
k=dic["name"]
print(k)
k=dic.setdefault("name")
print(k)

请⽤尽可能完整的语⾔表⽰出元组及其特点

tu = (1, 2, 3, 4, [1, 2, 30])
print(tu[0]) #索引取值
print(tu[0:5]) #索引切片取值
len(tu)
for i in tu:
    print(i)
# 元组的元素不能修改,但是如果元素是可变类型可以修改元素
# 可以使用in not in  成员运算
# 元组,列表,集合可以相互转换

请⽤尽可能完整的语⾔表⽰出集合并说说它所具备的功

# 集合、list、tuple、dict一样都可以存放多个值,但是集合主要用于:去重、关系运算
# 定义:在{}内用逗号分隔开多个元素,集合具备以下三个特点:
#      1:每个元素必须是不可变类型
#      2:集合内没有重复的元素
#      3:集合内元素无序
set1 = {1, 2, 3}
set2 = {2, 3, 4}
info_set = set1 | set2  # set1和set2合并  {1, 2, 3, 4}
print(info_set)
info_set = set1 & set2  # set1和set2重复部分 {2, 3}
print(info_set)
info_set = set1 - set2  # set1减去(set1和set2重复部分) {1}
print(info_set)
info_set = set2 - set1  # set2减去(set1和set2重复部分) {4}
print(info_set)
info_set = set2 ^ set1  # set1和set2不重复的地方合并{1, 4}
print(info_set)

什么是字符编码,能否说说他的来龙去

(1)什么是字符编码
字符编码就是将人类能看懂的字符转成计算机能看懂的二进制数据的媒介
(2)来龙去脉
一家独大
计算机诞生在美国,当时因为二进制编码太过复杂,于是美国就发明了ASCII码表,其中用英文字符代替一串二进制数据
诸侯割据
随着时代的进步和科技的发展,各国也逐渐产生了属于自己国家的编码表,其中中国的为GBK
一统天下
因为各国之间的编码表错综复杂,兼容性不强,于是万国码unicode诞生 内存中是unicode,文件保存用utf-8

python中如何操作⽂件

with open(file_path,'w/a/r',encoding='utf-8') as f:
    f.write(data)/f.read()

⽂件的读写模式有哪些,各⾃有何特点

操作文件有以下几种模式
w模式:
只写模式,如果文件不存在则新建文件,写入内容
如果文件存在,打开文件写入内容,但是是清空后写入内容
r模式:
只读模式,打开文件,将文件中的内容读出来
a模式:
追加写模式,如果存在文件则继续在文件的末尾继续追加内容
如果文件不存在,则新建文件,写入内容
另外还有两种模式
wb模式:
写入二进制数据,将图片/视频等二进制文件进行写入保存成文件
rb模式:
读二进制数据,将图片/视频等二进制文件从文件中读出来转成二进制数据

⽂件常⽤操作⽅法有哪

read()
读取所有内容,执行完成后,指针在结尾
.readline()
读取一行内容,光标移动到第二行前面
.readlines()
读取每一行内容,存放到列表内
.write()
一次性写入
.writelines()
逐行写入
.readable()
文件是否可读
.writable()
文件是否可写

什么是函数,定义函数的语法结构及各部分含义

1)什么是函数
函数就是在内存空间中开辟一块内存空间,存放可重复执行的代码块,再用关键字定义变量名指向这块内存空间。由关键字,变量名和函数体组成的可重复执行的代码块
(2)语法结构
def main():
    需要执行的代码
    return 返回值
(3)解析
def:函数的关键字
main:函数的变量名
需要执行的代码块:想要实现或重复执行的代码
return:返回值关键字
返回值:函数体执行后需要返回的结果(可以不写return,如果没有返回值的前提下

二代码实战

编写员⼯管理系统

user_data_list = []  # 因为列表能够存放多个信息,形式:[{'user_id':1, 'name':'kevin', 'age':18}, {'user_id':1, 'name':'kevin', 'age':18}, {}, {}]
while True:
    print("""
        1. 添加员工信息
        2. 查看员工信息
        3. 删除员工信息
        4. 修改员工信息
        5. 退出系统
    """)
    choice = input('请输入你要操作的功能编号:').strip()
    print(choice)
    if not choice.isdigit():
        print('你能不能好好输入?')
        continue
    if choice == '1':
        print('添加员工信息')
        # 5. 开始让用户输入员工信息
        user_id = input('请输入你的员工编号:').strip()
        #[{'user_id': '21', 'user_name': 'lgj', 'user_age': '25', 'user_gender': 'nan', 'user_salary': '2500'}]
        for user_data in user_data_list:
            if user_data["user_id"]==user_id:
                print("你输入的ID已经存在请重新输入ID")
                break
        else:
            user_name = input('请输入你的姓名:').strip()
            user_age = input('请输入你的年龄:').strip()
            user_gender = input('请输入你的性别:').strip()
            user_salary = input('请输入你的薪资:').strip()
            dic = {}
            dic["user_id"] = user_id
            dic["user_name"] = user_name
            dic["user_age"] = user_age
            dic["user_gender"] = user_gender
            dic["user_salary"] = user_salary
            user_data_list.append((dic))
            print(user_data_list)
            print(f"{user_name}注册成功")
    if choice == '2':
        user_id = input('请输入你的员工编号:').strip()
        for user_data in user_data_list:
            if user_data["user_id"]==user_id:
                print(user_data)
                print(user_data_list)
    if choice == '3':
        user_id = input('请输入你的员工编号:').strip()
        for user_data in user_data_list:
            user_data_list.remove(user_data)
            print(user_data_list)
    if choice == '4':
        user_id = input('请输入你的员工编号:').strip()
        count=0
        for user_data in user_data_list:
            if user_data["user_id"]==user_id:
                user_name = input('请输入你的姓名:').strip()
                user_age = input('请输入你的年龄:').strip()
                user_gender = input('请输入你的性别:').strip()
                user_salary = input('请输入你的薪资:').strip()
                # [{'user_id': '21', 'user_name': 'lgj', 'user_age': '25', 'user_gender': 'nan', 'user_salary': '2500'}]
                user_data_list[count]["user_name"]=user_name
                user_data_list[count]["user_age"]=user_age
                user_data_list[count]["user_gender"]=user_gender
                user_data_list[count]["user_salary"]=user_salary
                count += 1
                print(user_data_list)

基于⽂件实现⽤户注册及登录功能

while 1:
    print('''
    1,注册功能
    2,登陆功能
    ''')
    cmd = input("请输入你要执行的功能编号:")
    if cmd == "1":
        username = input("username:").strip()
        password = input("password:").strip()
        with open("userinfo1.txt", "r", encoding="utf-8") as f:
​
            if username in f.read():
                print("用户已存在")
            else:
                data = f'{username}|{password}\n'
                print(f'{username}注册成功')
                with open("userinfo1.txt", "a", encoding="utf-8") as f:
                    f.write(data)
    elif cmd == "2":
        username = input("username:").strip()
        password = input("password:").strip()
        with open("userinfo1.txt", "r", encoding="utf-8") as f:
            for line in f:
                real_name, real_password = line.split("|")
                if real_name == username and real_password.strip() == password:
                    print("登陆成功")
                    break
            else:
                print("登陆失败")
    else:
        print("请按要求输入编号!")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值