python基础练习题 经常更新
小练习
1.打印出jason
l1 = [11, 22, 'kevin', ['tony', 'jerry', [123, 456, 'jason']]]
# print(l1[3][2][2])
l2 = l1[3] # l2 = ['tony', 'jerry', [123, 456, 'jason']]
l3 = l2[2] # l3 = [123, 456, 'jason']
print(l3[2])
2.打印出大宝贝
d1 = {'name': 'jason', 'others': {'a1': 'heiheihei', 'a2': {'k1': 'hahaha', 'k2': 'hehehe', 'k3': '大宝贝'}}}
# print(d1['others']['a2']['k3'])
d2 = d1['others'] # d2 = {'a1': 'heiheihei','a2': {'k1': 'hahaha','k2': 'hehehe','k3': '大宝贝'}}
d3 = d2['a2'] # d3 = {'k1': 'hahaha','k2': 'hehehe','k3': '大宝贝'}
print(d3['k3'])
3.打印出run
data = {'username': 'jason', 'hobby': [11, 22, {'height': 183, 'hobby': ['read', 'run', 'music']}]}
# print(data['hobby'][2]['hobby'][1])
data1 = data['hobby'] # data1 = [11, 22, {'height': 183,'hobby': ['read' 'run','music']}]
data2 = data1[2] # data2 = {'height': 183,'hobby': ['read' 'run','music']}
data3 = data2['hobby'] # data3 = ['read' 'run','music']
print(data3[1])
九九乘法表
for a in range(1, 10):
for b in range(1, a+1):
print("%s*%s=%s\t" % (b, a, b*a,),end="")
print()
1.计算1-100所有的数之和
num = 0
for i in range(1,101):
num += i
print(num)
2.判断列表中数字2出现的次数
l1 = [11,2,3,2,2,1,2,1,2,3,2,3,2,3,4,3,2,3,2,2,2,2,3,2]
l1 = [11,2,3,2,2,1,2,1,2,3,2,3,2,3,4,3,2,3,2,2,2,2,3,2]
num = 0
for i in l1:
if i == 2:
num += 1
print(num)
3.编写代码自动生成所有页网址(注意总共多少页)
https://movie.douban.com/top250
s = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0,251,25):
print(s % i)
4.编写代码打印出下列图形(ps:for循环嵌套)
*****
*****
*****
*****
for i in range(4):
for j in range(5):
print("*", end='')
print()
5.获取用户输入并打印成下列格式
------------ info of Jason -----------
Name : Jason
Age : 18
Sex : male
Job : Teacher
---------------- end -----------------
name = input('请输入名字>>>:')
age = input('请输入年龄>>>:')
sex = input('请输入性别>>>:')
job = input('请输入工作>>>:')
print("""
-------------info of %s---------
Name:%s
Age:%s
Sex:%s
Job:%s
----------------end-------------
"""% (name,name,age,sex,job))
6.说出下列变量名v绑定的结果
v1 = 1 or 3
v2 = 1 and 3
v3 = 0 and 2 and 1
v4 = 0 and 2 or 1
v5 = 0 and 2 or 1 or 4
v6 = 0 or False and 1
v1 = 1 or 3 # 1
v2 = 1 and 3 # 3
v3 = 0 and 2 and 1 # 0
v4 = 0 and 2 or 1 # 1
v5 = 0 and 2 or 1 or 4 # 1
v6 = 0 or False and 1 # False
or看两边是否有成立的,有一个成立就成立,输出为右边数值或者True
and如果左边成立则看右边,成立则看右边的值,True或False
7.利用列表编写一个员工管理系统
输入1执行添加用户名功能
输入2执行查看所有用户名功能
输入3执行删除指定用户名功能
'''分析 用户输入的不同 可以执行不同的代码'''
''' ps: 思考如何让程序循环起来并且可以根据不同指令执行不同操作
提示: 循环结构 + 分支结构
1.优化员工管理系统
拔高: 是否可以换成字典或者数据的嵌套使用完成更加完善的员工管理而不是简简单单的一个用户名(能写就写不会没有关系)
# 先定义一个空字典
# user_data_dict = {}
# # 建立循环
# while True:
# print("""
# 1.添加员工信息
# 2.修改员工薪资
# 3.查看指定员工信息
# 4.查看所有员工信息
# 5.删除员工信息
# """)
# # 获取需要查看的功能编码
# choice = input('请输入需要执行的功能编码>>>:').strip()
# # 判断输入的功能编码
# if choice == '1':
# # 获取员工信息
# emp_id = input('请输入员工编号>>>:').strip()
# # 判断员工编号是否存在
# if emp_id in user_data_dict:
# print('员工编号已存在,无法重复添加')
# continue
# # 获取员工其他信息
# emp_name = input('请输入员工姓名>>>:').strip()
# emp_age = input('请输入员工年龄>>>:').strip()
# emp_salary = input('请输入员工薪资>>>:').strip()
# # 定义一个员工小字典
# user_dict = {'emp_id': emp_id, 'emp_name': emp_name, 'emp_age': emp_age, 'emp_salary': emp_salary}
# # 员工小字典插入大字典
# user_data_dict[emp_id] = user_dict
# # 提示信息
# print(f'员工{emp_name}信息已添加完成')
# elif choice == '2':
# # 获取需要修改的员工编号
# target_id = input('请输入需要修改的员工编号>>>:').strip()
# # 判断编号是否存在
# if target_id not in user_data_dict:
# print('你输入的员工编号不存在,无法修改')
# continue
# # 获取对应员工字典数据
# user_dict = user_data_dict.get(target_id)
# # 获取员工新的薪资
# new_salary = input('请输入员工新的薪资>>>:').strip()
# # 修改员工字典数据
# user_dict['emp_salary'] = new_salary
# # 修改大字典数据
# user_data_dict[target_id] = user_dict
# # 打印提示
# print(f'编号为{target_id}的员工薪资成功修改为{new_salary}')
# elif choice == '3':
# # 获取需要查询的员工编号
# target_id = input('请输入需要查询的员工编号>>>:').strip()
# # 判断编号是否存在
# if target_id not in user_data_dict:
# print('你输入的员工编号不存在,无法查询')
# continue
# # 获取指定用户字典信息
# user_dict = user_data_dict.get(target_id)
# print("""
# ------------user info----------
# 员工编号:%s
# 员工姓名:%s
# 员工年龄:%s
# 员工薪资:%s
# -----------------end-----------
# """ % tuple(user_dict.values()))
# elif choice == '4':
# # 获取员工信息并打印
# for user_dict in user_data_dict.values():
# print("""
# -------------user info---------
# 员工编号:%s
# 员工姓名:%s
# 员工年龄:%s
# 员工薪资:%s
# -----------------end-----------
# """ % tuple(user_dict.values()))
# elif choice == '5':
# # 获取需要删除的员工编号
# delete_id = input('请输入需要删除的员工编号>>>:').strip()
# # 判断编号是否存在
# if delete_id not in user_data_dict:
# print('你输入的员工编号不存在,无法删除')
# continue
# res = user_data_dict.pop(delete_id)
# print(f'员工信息已删除完成', res)
# else:
# print("请输入正确的功能编码")
第二种写法
# 先定义一个空字典
# user_data_dict = {}
# 1.先搭建系统骨架
# while True:
# print("""
# 1.创建员工信息
# 2.查看单个员工
# 3.查看所有员工
# 4.修改员工薪资
# 5.删除员工信息
# """)
# choice = input('请选择您想要执行的功能编号>>>:').strip()
# if choice == '1':
# while True:
# # 1.获取员工编号
# emp_id = input('请输入该员工的员工编号(q)>>>:').strip()
# if emp_id == 'q':
# break
# # 判断编号是否是纯数字
# if not emp_id.isdigit():
# print('员工编号必须是纯数字')
# continue
# # 2.判断员工编号是否已存在
# if emp_id in user_data_dict:
# print('员工编号已存在 请重新录入')
# continue
# # 3.获取员工详细信息
# username = input('请输入员工姓名>>>:').strip()
# age = input('请输入员工年龄>>>:').strip()
# job = input('请输入员工岗位>>>:').strip()
# salary = input('请输入员工薪资>>>:').strip()
# # 4.构建一个临时的小字典
# temp_dict = {}
# # 5.添加员工信息键值对
# temp_dict['emp_id'] = emp_id
# temp_dict['name'] = username
# temp_dict['age'] = age
# temp_dict['job'] = job
# temp_dict['salary'] = salary
# # 6.添加到大字典中
# user_data_dict[emp_id] = temp_dict
# print(f'员工{username}添加成功')
# elif choice == '2':
# while True:
# # 1.先获取员工编号
# target_id = input('请输入您想要查看的员工编号(q)>>>:').strip()
# if target_id == 'q':
# break
# # 2.判断员工编号是否不存在
# if target_id not in user_data_dict:
# print('员工编号不存在 无法查看')
# continue
# # 3.根据员工编号获取员工字典数据
# user_dict = user_data_dict.get(target_id)
# # 4.格式化输出
# print(f"""
# --------------info of emp-------------------
# 编号:{user_dict.get('emp_id')}
# 姓名:{user_dict.get('name')}
# 年龄:{user_dict.get('age')}
# 岗位:{user_dict.get('job')}
# 薪资:{user_dict.get('salary')}
# --------------------------------------------
# """)
# elif choice == '3':
# for user_dict in user_data_dict.values():
# print(f"""
# --------------info of emp-------------------
# 编号:{user_dict.get('emp_id')}
# 姓名:{user_dict.get('name')}
# 年龄:{user_dict.get('age')}
# 岗位:{user_dict.get('job')}
# 薪资:{user_dict.get('salary')}
# --------------------------------------------
# """)
# elif choice == '4':
# while True:
# # 1.先获取想要修改的员工编号
# target_id = input('请输入您想要修改的员工编号(q)>>>:').strip()
# if target_id == 'q':
# break
# if target_id not in user_data_dict:
# print('员工编号不存在')
# continue
# # 2.获取新的薪资
# new_salary = input('请输入该员工的新薪资待遇>>>:').strip()
# if not new_salary.isdigit():
# print('薪资只能是纯数字')
# continue
# # 3.获取员工字典
# user_dict = user_data_dict.get(target_id) # {'salary':123}
# # 4.修改字典中的薪资
# user_dict['salary'] = new_salary # {'salary': 321}
# # 5.修改大字典
# user_data_dict[target_id] = user_dict
# print(user_data_dict.get(target_id))
# elif choice == '5':
# while True:
# # 1.先获取想要删除的员工编号
# target_id = input('请输入您想要删除的员工编号(q)>>>:').strip()
# if target_id == 'q':
# break
# if target_id not in user_data_dict:
# print('员工编号不存在')
# continue
# # 2.字典删除键值对
# user_data_dict.pop(target_id)
# else:
# print('抱歉 暂无该功能编号!!!')
8.去重下列列表并保留数据值原来的顺序
eg: [1,2,3,2,1] 去重之后 [1,2,3]
l1 = [2,3,2,1,2,3,2,3,4,3,4,3,2,3,5,6,5]
# l1 = [2,3,2,1,2,3,2,3,4,3,4,3,2,3,5,6,5]
# # 定义一个空列表
# s = []
# for i in l1:
# if i not in s:
# s.append(i)
# print(s)
9.有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
# pythons={'jason','oscar','kevin','ricky','gangdan','biubiu'}
# linuxs={'kermit','tony','gangdan'}
# # 1. 求出即报名python又报名linux课程的学员名字集合
# print(pythons & linuxs)
# # 2. 求出所有报名的学生名字集合
# print(pythons | linuxs)
# 3. 求出只报名python课程的学员名字
# print(pythons - linuxs)
# # 4. 求出没有同时报这两门课程的学员名字集合
# print(pythons ^ linuxs)
4.统计列表中每个数据值出现的次数并组织成字典
eg: l1 = ['jason','jason','kevin','oscar']
结果:{'jason':2,'kevin':1,'oscar':1}
真实数据
l1 = ['jason','jason','kevin','oscar','kevin','tony','kevin']
# s = {}
# for i in l1:
# if i not in s:
# s[i] = 1
# else:
# s[i] += 1
# print(s)
1.编写简易版本的拷贝工具
自己输入想要拷贝的数据路径 自己输入拷贝到哪个地方的目标路径
任何类型数据皆可拷贝
ps:个别电脑C盘文件由于权限问题可能无法拷贝 换其他盘尝试即可
1.获取想要拷贝的文件路径
source_file_path = input('请输入您想要拷贝的文件路径>>>:').strip()
2.获取目标文件的路径
target_file_path = input('请输入您想要拷贝到哪个地方的路径>>>:').strip()
3.打开第一个文件路径 读取内容写入第二个文件路径中
with open(r'%s' % source_file_path, 'rb') as read_f, open(r'%s' % target_file_path, 'wb') as write_f:
for line in read_f:
write_f.write(line)
2.利用文件充当数据库编写用户登录、注册功能
文件名称:userinfo.txt
基础要求:
用户注册功能>>>:文件内添加用户数据(用户名、密码等)
用户登录功能>>>:读取文件内用户数据做校验
ps:上述功能只需要实现一次就算过关(单用户) 文件内始终就一个用户信息
拔高要求:
用户可以连续注册
用户可以多账号切换登录(多用户) 文件内有多个用户信息
ps:思考多用户数据情况下如何组织文件内数据结构较为简单
提示:本质其实就是昨天作业的第二道题 只不过数据库由数据类型变成文件
# while True:
# print("""
# 1.注册功能
# 2.登陆功能
# """)
# choice = input('请输入你需要执行的功能>>>:').strip()
# if choice == '1':
# username = input('please input your username>>>:').strip()
# password = input('please input your password>>>:').strip()
# # 2.校验用户名和密码已存在
# with open(r'userinfo.txt', 'r', encoding='utf8') as f:
# for line in f: # jason|123
# real_name, real_pwd = line.split('|')
# if username == real_name:
# print('用户已存在,无法完成注册')
# break # 一旦重复 没有必要继续往下校验是否重复了 直接结束循环
# else:
# with open(r'userinfo.txt', 'a', encoding='utf8') as f1:
# f1.write(f'{username}|{password}\n')
# print(f'用户{username}注册成功')
# elif choice == '2':
# username = input('please input your username>>>:').strip()
# password = input('please input your password>>>:').strip()
# # 2.打开文件读取内容并校验
# with open(r'userinfo.txt', 'r', encoding='utf8') as f:
# for line in f: # jason|123
# real_name, real_pwd = line.split('|') # 'jason' '123\n'
# if real_name == username and real_pwd.strip('\n') == password:
# print('登陆成功')
# break
# else:
# print('用户名和密码错误')
# else:
# print('没有当前功能编号')
1.利用递归函数依次打印列表中每一个数据值
l1 = [1, [2, [3, [4, [5, [6, [7, [8, ]]]]]]]]
# 方法1:胡
def print_item(l):
print(l[0])
if len(l) == 1:
return l[0]
return print_item(l[1])
print_item(l1)
# 方法2:
# print(isinstance(123,int)) # 判断第一个数据值是不是属于第二个参数指定的数据类型
# print(isinstance(123,str)) # 判断第一个数据值是不是属于第二个参数指定的数据类型
def get_num(l1):
for i in l1:
if isinstance(i, int):
print(i)
else:
return get_num(i)
get_num(l1)
2.利用有参装饰器编写多种用户登录校验策略
def login_auth(condition):
def outer(func_name):
def inner(*args,**kwargs):
# 获取用户名和密码
username = input('please input your username>>>:').strip()
password = input('please input your password>>>:').strip()
# 判断校验的策略
if condition == 'absolute':
if username == 'jason' and password == '123':
res = func_name(*args, **kwargs)
return res
else:
print('用户名和密码错误')
elif condition == 'list_type':
user_list = ['jason|123', 'tony|321', 'kevin|222']
user_data = f'{username}|{password}'
if user_data not in user_list:
res = func_name(*args, **kwargs)
return res
else:
print('用户名和密码错误')
elif condition == 'file_type':
with open(r'userinfo.txt','r',encoding='utf8')as f:
for line in f:
real_name, real_pwd = line.split('|')
if real_name == username and real_pwd.strip('\n') == password:
res = func_name(*args, **kwargs)
return res
return inner
return outer
@login_auth('absolute')
def index(*args,**kwargs):
print('form index')
@login_auth('list_type')
def func(*args,**kwargs):
print('from func')
@login_auth('file_type')
def func1(*args,**kwargs):
print('from func1')
index()
func()
func1()
l1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
统计 {'k1'[小于60], 'k2':[大于60]}
# 1.先定义字典数据
# num_dict = {'k1': [], 'k2': []}
# 2.for循环列表数据
# for i in l1:
# if i > 60:
# num_dict.get('k2').append(i)
# else:
# num_dict.get('k1').append(i)
# print(num_dict)
python基础练习题 经常更新的更多相关文章
- python基础练习题1
深深感知python基础是有多么重要,Ljh说一定要多练题,so,我现在开始要每天打卡练习python.加油! 01:求‘1-100’的偶数和 #第一种解法: sum=0 num=0 while nu ...
- python基础练习题(九九乘法表)
又把python捡起来了,动手能力偏弱,决定每日一练,把基础打好! ------------------------------------------------------------------ ...
- python基础练习题
购物车程序 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/3/6 21:01 # @Author : hyang # @Si ...
- Python基础 练习题
DAY .1 1.使用while循环输出 1 2 3 4 5 6 8 9 10 n = 1 while n < 11: if n == 7: pass else: print(n) n ...
- Python基础练习题100例(Python 3.x)
1:题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 程序源 ...
- python基础练习题30道
1.执行python脚本的两种方式 答:1>可以在python /home/xxxx.py 2>cd /home ./xxxx.py 因为py脚本里面指定了python解释器的位置 ...
- 08: python基础练习题
1.while循环实现输出2 - 3 + 4 - 5 + 6 ... + 100 的和 # 使用while循环实现输出2 - 3 + 4 - 5 + 6 ... + 100 的和 s = 0 i = ...
- 『Python基础练习题』day05
# 请将列表中的每个元素通过 "_" 链接起来. users = ['毛利兰', '柯南', '怪盗基德'] # 请将元组 v1 = (11, 22, 33) 中的所有元素追加到列 ...
- 『Python基础练习题』day02
1.判断下列逻辑语句的True, False 1) 1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 2) ...
- Python学习【day03】- Python基础练习题(列表、元组、字典)
#!/usr/bin/env python # -*- coding:utf8 -*- # 1.有两个列表 # l1 = [11,22,33] # l2 = [22,33,44] # a.获取内容相同 ...
随机推荐
- uoj220【NOI2016】网格
刚了几个小时啊,这tm要是noi我怕不是直接滚粗了.我判答案为1的情况试了几种做法,最后终于想到了一个靠谱的做法,然后细节巨多,调了好久,刚拿到97分时代码有6.2KB了,后来发现有些东西好像没啥用就 ...
- 【Firefox浏览器】关闭触摸板双指滑动进行前进后退的功能
痛点 本以为只是Chrome浏览器存在这一奇葩功能,没成想Firefox也沦陷了!有好一阵子在使用Firefox的时候,并未发现其存在这个功能.直到有一天,打开自己的博客,翻阅上篇< [Chro ...
- 2022年最新最详细IDEA关联数据库方式、在IDEA中进行数据库的可视化操作(包含图解过程)
文章目录 1.使用IDEA关联Mysql数据库的详细操作步骤 1.1 打开侧边栏的Database 2.2. 选择要连接的数据库(Mysql) 2.3 .输入要连接的数据库.用户名.密码 2.4 .点 ...
- go-zero docker-compose 搭建课件服务(九):http统一返回和集成日志服务
0.索引 go-zero docker-compose 搭建课件服务(九):http统一返回和集成日志服务 0.1源码地址 https://github.com/liuyuede123/go-zero ...
- Codeforces Round #829 (Div. 2) A-E
比赛链接 A 题解 知识点:枚举. 只要一个Q后面有一个A对应即可,从后往前遍历,记录A的数量,遇到Q则数量减一,如果某次Q计数为0则NO. 时间复杂度 \(O(n)\) 空间复杂度 \(O(1)\) ...
- Python基础部分:9、数据的类型和内置方法
目录 一.数据类型内置方法理论 1.什么是数据内置方法 2.如何调用数据内置方法 二.整型(int)内置方法与操作 1.类型转换 2.进制数转换 三.浮点型(float)内置方法与操作 1.类型转换 ...
- ThreadLocal的使用及原理解析
# 基本使用 JDK的lang包下提供了ThreadLocal类,我们可以使用它创建一个线程变量,线程变量的作用域仅在于此线程内.<br />用2个示例来展示一下ThreadLocal的用 ...
- Uniapp And Taro一些小测评
前情 最近公司准备新开发一个小程序项目,对于使用哪一款小程序框架有一些犹豫,我有过2年左右的uniapp项目开发经验,Taro在刚刚出来的时候有尝试过,经常莫名报错需要重启,在内心是有些偏向uniap ...
- 【ASP.NET Core】MVC控制器的各种自定义:应用程序约定的接口与模型
从本篇起,老周会连发N篇水文,总结一下在 MVC 项目中控制器的各种自定义配置. 本文内容相对轻松,重点讨论一下 MVC 项目中的各种约定接口.毕竟你要对控制器做各种自定义时,多数情况会涉及到约定接口 ...
- vue3 结合 element-plus 框架实现增删改查功能(不连接数据库)
一.效果图 二.代码 2.1.导入依赖(已经安装过node.js) npm install element-plus --save 注意:要是安装失败,可以使用淘宝镜像进行下载,如下: 2.2.设置淘 ...