小练习

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基础练习题 经常更新的更多相关文章

  1. python基础练习题1

    深深感知python基础是有多么重要,Ljh说一定要多练题,so,我现在开始要每天打卡练习python.加油! 01:求‘1-100’的偶数和 #第一种解法: sum=0 num=0 while nu ...

  2. python基础练习题(九九乘法表)

    又把python捡起来了,动手能力偏弱,决定每日一练,把基础打好! ------------------------------------------------------------------ ...

  3. python基础练习题

    购物车程序 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/3/6 21:01 # @Author : hyang # @Si ...

  4. 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 ...

  5. Python基础练习题100例(Python 3.x)

    1:题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 程序源 ...

  6. python基础练习题30道

    1.执行python脚本的两种方式 答:1>可以在python /home/xxxx.py 2>cd /home    ./xxxx.py  因为py脚本里面指定了python解释器的位置 ...

  7. 08: python基础练习题

    1.while循环实现输出2 - 3 + 4 - 5 + 6 ... + 100 的和 # 使用while循环实现输出2 - 3 + 4 - 5 + 6 ... + 100 的和 s = 0 i = ...

  8. 『Python基础练习题』day05

    # 请将列表中的每个元素通过 "_" 链接起来. users = ['毛利兰', '柯南', '怪盗基德'] # 请将元组 v1 = (11, 22, 33) 中的所有元素追加到列 ...

  9. 『Python基础练习题』day02

    1.判断下列逻辑语句的True, False 1) 1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 2) ...

  10. Python学习【day03】- Python基础练习题(列表、元组、字典)

    #!/usr/bin/env python # -*- coding:utf8 -*- # 1.有两个列表 # l1 = [11,22,33] # l2 = [22,33,44] # a.获取内容相同 ...

随机推荐

  1. 手写自定义springboot-starter,感受框架的魅力和原理

    一.前言 Springboot的自动配置原理,面试中经常问到,一直看也记不住,不如手写一个starter,加深一下记忆. 看了之后发现大部分的starter都是这个原理,实践才会记忆深刻. 核心思想: ...

  2. Vue学习之--------组件的基本使用(非单文件组件)(代码实现)(2022/7/22)

    文章目录 1.为啥要使用组件 2.基本使用 3.代码实例 4.测试效果 5.注意点 1.为啥要使用组件 好用啊.像堆积木一样 2.基本使用 Vue中使用组件的三大步骤: 一.定义组件(创建组件) 二. ...

  3. Vscode设置标签页多行显示

    1.设置标签页多行展示的方法 文件–>首选项–>设置 2.勾选多行显示按钮 3.显示效果

  4. 关于针对XSS漏洞攻击防范的一些思考

    众所周知,XSS几乎在最常见.危害最大的WEB漏洞.针对这个危害,我们应该怎么防范呢. 下面简单说一下思路. 作者:轻轻的烟雾(z281099678) 一.XSS漏洞是什么 XSS漏洞网上的资料太多, ...

  5. 记一次 .NET 某娱乐聊天流平台 CPU 爆高分析

    一:背景 1.讲故事 前段时间有位朋友加微信,说他的程序直接 CPU=100%,每次只能手工介入重启,让我帮忙看下到底怎么回事,哈哈,这种CPU打满的事故,程序员压力会非常大, 我让朋友在 CPU 高 ...

  6. 嵌入式-C语言:通过结构体指针操作结构体内容

    #include<stdio.h> #include<string.h> struct Student { char name[32]; int age; int height ...

  7. 2022-11-12 Acwing每日一题

    本系列所有题目均为Acwing课的内容,发表博客既是为了学习总结,加深自己的印象,同时也是为了以后回过头来看时,不会感叹虚度光阴罢了,因此如果出现错误,欢迎大家能够指出错误,我会认真改正的.同时也希望 ...

  8. 我把 CPU 三级缓存的秘密,藏在这 8 张图里

    本文已收录到  GitHub · AndroidFamily,有 Android 进阶知识体系,欢迎 Star.技术和职场问题,请关注公众号 [彭旭锐] 进 Android 面试交流群. 前言 大家好 ...

  9. Atlas人工智能基础知识

    目录 一.  AI基本概念 1.人工智能是什么 2.人工智能.机器学习.深度学习的关系是什么 2.监督学习.无监督学习.半监督学习和强化学习是什么 3.什么是模型和网络 4.什么是训练和推理 5.什么 ...

  10. laravel框架 forelse和foreach

    1. @forelse($data as $v) 循环数据内容..... @empty 数据为空提示... @endforelse 2. @foreach($data as $v) 循环数据内容... ...