小练习

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. [Mysql] 两段提交

    事务提交 Mysql 默认开启自动提交事务 两段提交 把一个事务分成两个阶段来提交,就是把redolog拆分成了prepare和commit两段 MySQL想要准备事务的时候会先写redolog.bi ...

  2. JDK8下载安装及环境配置

    Java基础知识 Java的三种版本 JavaSE :标准版,主要用于开发桌面程序,控制台开发等等 JavaME:嵌入式开发,主要用于开发手机,小家电等等,目前使用的比较少 JavaEE:企业级开发, ...

  3. java代码整洁之道

    package Day01;import org.junit.Test;import java.text.NumberFormat;import java.util.Scanner;public cl ...

  4. nodered获取简单的时间

    1.添加simpletime 的节点 2. 添加一个inject节点用来每1s循环获取当点的信息 3.添加一个函数节点对simpletime发来的msg进行解析 var payload=msg;var ...

  5. yaml使用

    yml使用 安装yaml pip install PyYaml yaml基本规则 # 1.大小写敏感 # 2.使用缩进表示层级关系, # 2.1 不能使用tab进行缩进,只能使用空格 # 2.2 缩进 ...

  6. [zoj] 4178. Killing the Brute-force

    题目 Chenjb is the task author of the 71-st Zhejiang Provincial Collegiate Programming Contest. He cre ...

  7. mysql 在连接表中的要点

    思路:分析需求,分析字段来自哪些表 (连接查询)            确定使用哪种连接查询?  确定交叉点(这两个表中哪些数据是相同的)            判断条件 such as  学生表中的 ...

  8. 8.一个项目实战(下载CSDN博客文章)

    专栏地址 ʅ(‾◡◝)ʃ 前言 要写一个下载器,首先要实现一个接口函数,而这个函数可以对请求的数据进行处理也就是爬虫,其次才是写图形化界面 接口的实现 其实CSDN的浏览器页面的接口很复杂,是直接通过 ...

  9. 【Java SE进阶】Day06 线程、同步

    一.线程 1.多线程原理 流程图 内存图解说明 创建线程的方式 继承Thread类 实现 Runnable接口 2.继承Thead类 3.实现Runnable接口 实现接口,重写run方法 最终均需要 ...

  10. QT+VS 调用基于Google Breakpad的跨平台Qt崩溃异常捕获调用方案

    方案一.基于Google Breakpad的跨平台Qt崩溃异常捕获调用方案 首先上博客:Windows下Qt生成dump文件并定位bug(基于qBreakpad) 这个地方使用的是一个叫qBreakP ...