目录

附加练习题(提示:一步步拆解)

1.想办法打印出jason

l1 = [11, 22, 'kevin',
['tony', 'jerry',
[123, 456, 'jason']
]
]
'''分步操作'''
# 1. 先看大列表到底有几个数据值 以及我们想要的数据值在哪个里面
# print(l1[3])
l2 = l1[3] # ['tony', 'jerry', [123, 456, 'jason']]
# 2. 再次思考小列表有几个数据值 以及我们想要的数据值在哪个里面
# print(l2[2])
l3 = l2[2] # [123, 456, 'jason']
# 3. 最后转化成了简单的索引直接取值
# print(l3[2])
'''简化操作'''
print(l1[3][2][2])

2.想办法打印出大宝贝

d1 = {'name': 'jason',
'others': {'a1': 'heiheihei',
'a2': {'k1': 'hahaha',
'k2': 'hehehe',
'k3': '大宝贝'}
}
}
'''分步操作'''
# 1. 先拿大字典第二个键值对的值
# print(d1['others'])
d2 = d1['others'] # {'a1': 'heiheihei', 'a2': {'k1': 'hahaha', 'k2': 'hehehe', 'k3': '大宝贝'}}
# 2. 再拿小字典第二个键值对的值
# print(d2['a2'])
d3 = d2['a2'] # {'k1': 'hahaha', 'k2': 'hehehe', 'k3': '大宝贝'}
# 3. 转化成简单的按k值直接取值
# print(d3['k3'])
'''简化操作'''
print(d1['others']['a2']['k3'])

3.想办法打印出run

data = {'username': 'jason',
'hobby': [11,22,
{'height': 183,
'hobby': ['read', 'run', 'music']
}
]
}
'''分步操作'''
# print(data['hobby'])
data1 = data['hobby'] # [11, 22, {'height': 183, 'hobby': ['read', 'run', 'music']}]
# print(data1[2])
data2 = data1[2] # {'height': 183, 'hobby': ['read', 'run', 'music']}
# print(data2['hobby'])
data3 = data2['hobby'] # ['read', 'run', 'music']
print(data3[1])
'''简化操作'''
print(data['hobby'][2]['hobby'][1])

4.获取用户输入并打印成下列格式

#     ------------- info of Jason ---------
# Name : Jason
# Age : 18
# Sex : male
# Job : Teacher
# ---------------- end -----------------
# 1.先制定一个打印的模板
info_demo = """
------------ info of %s -------------
Name : %s
Age : %s
Job : %s
---------------- end -----------------
"""
# 2.获取用户输入
username = input('username>>>:')
age = input('age>>>:')
job = input('job>>>:')
# 3.格式化输出
print(info_demo % (username, username, age, job))

5 根据用户输入内容打印其权限

'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''
# 1. 获取用户输入的用户名
username = input('请输入您的用户名>>>:')
# 2. 判断用户名 打印不同的提示>>>:不同的条件执行不同的代码 那么需要使用分支结构
if username == 'jason':
print('超级管理员')
elif username == 'tom':
print('普通管理员')
# elif username == 'jack' or 'rain': # 错误写法
# elif username == 'jack' or username == 'rain':
elif username in ['jack', 'rain']: # 正确写法
print('业务主管')
else:
print('普通用户')

6 编写用户登录程序

 要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
eg:black_user_list = ['jason','kevin','tony']
如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
eg: oscar 123 # 提前定义好黑名单用户
black_user_list = ['jerry', 'kevin', 'tony']
# 1.先获取用户输入的用户名和密码
username = input('请输入您的用户名>>>:') # 3. 先判断用户名是否是黑名单用户
if username in black_user_list:
print('您一句被拉黑了 无法消费')
else:
password = input('请输入您的密码>>>:')
# 2. 判断用户名和密码是否正确
if username == 'jason' and password == '123':
print('登录成功 来宾一位')
else:
print('用户名或密码错误')

7 编写用户登录程序

 用户如果登录失败 则只能尝试三次
用户如果登录成功 则直接结束程序 # 4. 定义一个计数器
count_num = 1
while True:
# 6. 先判断当前尝试了几次
if count_num == 4:
print('很抱歉 您已经尝试了三次')
break
# 1.获取用户数据
username = input('username>>>:')
password = input('password>>>:')
# 2. 校验数据是否正确
if username == 'jason' and password == '123':
print('登录成功')
break # 3.结束循环体代码
else:
print('用户名或密码错误')
# 5. 每错误一次就让计数器自增1
count_num += 1

8 猜年龄游戏

假设用户的真实年龄是18 编写一个猜年龄的游戏 获取用户猜测的年龄
基本要求:可以无限制猜测 每次猜错给出提示(猜大了 猜小了) 猜对则结束程序
拔高练习:每次猜测只有三次机会 一旦用完则提示用户是否继续尝试 用户通过输入n或者y来表示是否继续尝试 如果是y则继续给用户三次猜测机会 否则结束程序 # 1. 先定义用户的真实年龄
real_age = 18
# 8. 定义计数器
count_num = 1
# 6. 添加循环结构
while True:
# 10. 判断当前尝试的次数
if count_num == 4:
choice = input('您已经尝试了三次 是否继续尝试(n/y)>>>:')
# 11. 判断用户输入的选择
if choice == 'y':
# 12. 重置计数器
count_num = 1
else:
print('下次再来玩哦')
break
# 2. 获取用户猜测的年龄
guess_age = input('你猜一猜我的年龄 好不好呀>>>:')
# 3. 由于一会儿需要比较大小 所以要将用户输入的字符串年龄转成整型的年龄
guess_age = int(guess_age)
# 4. 判断年龄是否猜测正确
if guess_age > real_age:
print('你这小伙子 真讨厌 人家有那么大吗')
# 猜测错了 计时器加一
count_num += 1
elif guess_age < real_age:
print('哎呀 你真讨厌 人家也没那么小啦')
# 猜测错了 计时器加一
count_num += 1
else:
print('你真棒 猜对了 嘿嘿嘿')
# 猜对了 直接结束循环
break

9 计算1-100 所有的数之和

all_num = 0
for i in range(1, 101):
all_num += i
print(all_num)

10 判断列表中数字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]
# 1. 先定义一个记录数字2出现次数的计数器
count_num = 0
# 2. 循环获取列表中每一个数据值判断是不是数字2
for i in l1:
# 3. 如果i绑定的数据值是2 则让计数器自增1
if i == 2:
count_num += 1
# 4. 等待for循环运行结束 打印计数器
print(count_num)

11 编写代码自动生成所有页网址(注意总共多少页)

https: // movie.douban.com / top250?start = 0 & filter =
https: // movie.douban.com / top250?start = 25 & filter =
https: // movie.douban.com / top250?start = 50 & filter = base_url = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0, 250, 25):
print(base_url % i)

12 编写代码打印出下列图形(ps:for循环嵌套)

*****
*****
*****
*****
for i in range(4): # 0 1 2 3 4次 4行
for j in range(5): # 0 1 2 3 4 5次 5列
print('*', end='')
print()
"""
补充debug调试模式(程序员后期找bug必备工具)
"""

13 基于字符串充当数据块完成用户登录(基础练习)

data_source = 'jason|123'  # 一个用户数据
#获取用户用户名和密码 将上述数据拆分校验用户信息是否正确 #定义用户真实数据
data_source = 'jason|123'
# 1. 获取用户名和密码
username = input('username>>>:').strip()
password = input('password>>>:').strip()
# 2. 切割字符串 获取真实用户名和密码
real_name, real_pwd = data_source.split('|')
# 3. 校验用户名和密码是否正确
if username == real_name and password == real_pwd:
print('登录成功')
else:
print('用户名或密码错误')

14 基于列表充当数据库完成用户登录(拔高练习)

方法一:
data_source = ['jason|123', 'kevin|321', 'oscar|222']
# 1. 先获取用户输入的用户名和密码
username = input('username>>>:').strip()
password = input('password>>>:').strip()
# 2. 循环获取列表中每个真实数据
for data in data_source: # 'jason|123' 'kevin|321'
real_name, real_pwd = data.split('|')
if username == real_name and password == real_pwd:
print('登录成功')
break
else:
print('用户名或密码错误') 方法二:
data_source = ['jason|123', 'kevin|321', 'oscar|222']
# 1. 先获取用户输入的用户名和密码
username = input('username>>>:').strip()
password = input('password>>>:').strip()
user_data = f'{username}|{password}' # username + '|' + password
if user_data in data_source:
print('登录成功')
else:
print('用户名或密码错误')

15 利用列表编写一个员工姓名管理系统

"""
输入1执行添加用户名功能
输入2执行查看所有用户名功能
输入3执行删除指定用户名功能
'''分析 用户输入的不同 可以执行不同的代码 '''
ps: 思考如何让程序循环起来并且可以根据不同指令执行不同操作
提示: 循环结构 + 分支结构
"""
# 1. 先定义个专门存储用户名的列表
data_list = []
# 2. 添加循环结构
while True:
# 3. 先打印项目功能 供用户选择
print("""
1.添加用户
2. 查看用户
3.删除用户
""")
# 4. 获取用户想要执行的功能编号
choice_num = input('请输入您想要执行的功能编号>>>:').strip()
# 5. 根据不同的功能编号执行不同的分支代码
if choice_num == '1':
# 6. 获取用户输入的用户名
username = input('请输入您的用户名>>>:').strip()
# 7. 判断当前用户名是否已经存在
if username in data_list:
print('用户名已存在')
else:
# 8. 列表添加用户名
data_list.append(username)
print(f'用户名{username}添加成功')
elif choice_num == '2':
# 9. 循环打印每一个用户数据
for name in data_list:
print(f"""
------user info-------
用户名:{name}
----------------------
""")
elif choice_num == '3':
# 10. 获取用户想要删除的用户名
delete_username = input('请输入您想要删除的用户名>>>:').strip()
# 11. 先判断用户名是否存在
if delete_username in data_list:
data_list.remove(delete_username)
print(f'用户名{delete_username}删除成功')
else:
print('你个傻帽 用户名不存在')
else:
print('很抱歉 暂时没有您想要执行的功能编号')

16 优化员工管理系统

  拔高: 是否可以换成字典或者数据的嵌套使用完成更加完善的员工管理而不是简简单单的一个用户名(能写就写不会没有关系)
员工的信息有:用户名 年龄 岗位 薪资...
员工管理系统:注册、查看(单个员工、所有员工)、修改薪资、删除员工 #定义一个存储所有员工信息的字典
user_data_dict = {} #{'编号':用户字典,'编号':用户字典}
'''
数据存储的方式1
{
’jason‘: [18, 'teacher', 10],
'kevin': [28, 'sale', 90]
}
数据存储的方式2
{
'jason': {'age':18, 'job':'teacher', 'salary': 8000},
'kevin': {'age':28, 'job':'sale', 'salary':9000}
}
数据存储的方式3
{
'1':{'name':'jason', 'age':18, 'job':'teacher', 'salary':8000},
'2':{'name':'kevin', 'age':28, 'job':'sale', 'salary':9000},
'3':{'name':'tony', 'age':28, 'job':'teacher', 'salary':8000},
}
''' #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.lower() == '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. 构建一个临时的小字典
tmp_dict = {}
# 5.添加员工信息键值对
tmp_dict['emp_id'] = emp_id
tmp_dict['name'] = username
tmp_dict['age'] = age
tmp_dict['job'] = job
tmp_dict['salary'] = salary
# 6. 添加到大字典中
user_data_dict[emp_id] = tmp_dict
print(f'员工{username}添加成功') elif choice == '2':
while True:
#1. 先获取员工编号
target_id = input('请输入您想要查看的员工编号(q)>>>:').strip()
if target_id.lower() == '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.lower() == '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) # {'emp_id':'1','name':'winter','age':18,'job':'sale','salary':3000}
# 4. 修改字典中的薪资
user_dict['salary'] = new_salary # {'salary': 5000}
# 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.lower == 'q':
break
if target_id not in user_data_dict:
print('员工编号不存在')
continue
# 2. 字典删除键值对
user_data_dict.pop(target_id)
else:
print('抱歉 暂无功能编号')

17 去重下列列表并保留数据值原来的顺序

# 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]
# 不考虑顺序的情况下 去重
s1 = set(l1)
l2 = list(s1)
print(l2)
# 考虑顺序
new_list = []
for i in l1:
if i not in new_list:
new_list.append(i)
print(new_list)

18 集合运算

# 3.有如下两个集合,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)

19 统计列表中每个数据值出现的次数并组织成字典展示

# 	eg: l1 = ['jason','jason','kevin','oscar']
# 结果:{'jason':2,'kevin':1,'oscar':1}
# 真实数据
l1 = ['jason', 'jason', 'kevin', 'oscar', 'kevin', 'tony', 'kevin']
# 1. 先定义结果集空字典
data_dict = {}
# 2. 循环列表中每一个数据值
for name in l1:
# 3.判断当前数据值是否在字典中的k中
if name not in data_dict:
data_dict[name] = 1 # {'jason':1}
else:
data_dict[name] += 1 #{'jason': 1+1}
# data_dict[name] = data_dict.get(name) + 1
print(data_dict)

20 编写简易版本的拷贝工具

自己输入想要拷贝的数据路径 自己输入拷贝到哪个地方的目标路径
任何类型数据皆可拷贝
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)

21 利用文件充当数据库编写用户登录、注册功能

文件名称: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':
# 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|\n'
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('没有该功能编号')

python基础作业1的更多相关文章

  1. python基础作业2

    目录 编写一个用户认证装饰器 利用有参装饰器编写多种用户登录校验策略 利用递归函数依次打印列表中每一个数据值 获取用户权限并校验用户登录 编写一个用户认证装饰器 """ ...

  2. 03 python基础作业(一)

    1.将['alex','eric',’rain’]用下划线拼接成字符串.(['alex','eric',123]呢?) li=['alex','eric','rain'] v='_'.join(li) ...

  3. python基础一之课后作业:编写登录接口

    1 # Author : Mamba 2 3 #python基础一之课后作业:编写登录接口 4 5 # 输入用户名密码 6 # 认证成功后显示欢迎信息 7 # 用户名3次输入错误后,退出程序 8 # ...

  4. python基础 实战作业 ---Excel基本读写与数据处理

    代码地址如下:http://www.demodashi.com/demo/11650.html 看完本篇需要: 10min 作业练习需要: 0.5h~3h(依练习者对python熟悉程度而定) 看完本 ...

  5. python开发基础作业01:模拟登陆系统

    随老男孩学习python mark 作业要求及提示:编写登录接口 ''' 练习程序:编写登录接口 1. 输入用户名和密码 2. 认证成功后显示欢迎信息 3. 输错三次后锁定 输入三次后退出,下次同样用 ...

  6. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  7. Python基础s14-day1

    2016年7月23日"Python基础s14-Day1" Python是什么? Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一种面向对象.直译式 ...

  8. python基础——使用dict和set

    python基础——使用dict和set dict Python内置了字典:dict的支持,dict全称dictionary,在其它语言中也称为map(映射),使用键-值(key-value)存储,具 ...

  9. Python之路【第二篇】:Python基础(一)

    一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'wupeiqi' print  name 下面的结论对吗? ...

随机推荐

  1. Luogu2543[AHOI2004]奇怪的字符串 (动态规划 LCS)

    04年的省选这么water吗,开个滚动数组算了 #include <iostream> #include <cstdio> #include <cstring> # ...

  2. Git 07 IDEA集成Git

    参考源 https://www.bilibili.com/video/BV1FE411P7B3?spm_id_from=333.999.0.0 版本 本文章基于 Git 2.35.1.2 IDEA 是 ...

  3. 【原创】JDK 9-17新功能30分钟详解-语法篇-var

    JDK 9-17新功能30分钟详解-语法篇-var 介绍 JDK 10 JDK 10新增了新的关键字--var,官方文档说作用是: Enhance the Java Language to exten ...

  4. Excel 插入嵌入式图表和独立图表的方法

    描述 嵌入式图表:是一种与当前工作表相同位置的图表,且悬浮在表格之上,不受表格限制,因此称之为嵌入式图表. 独立图表:是独立于当前工作表的图表,打印时,需要单独将其打印出来. 插入独立图表的图文教程: ...

  5. day24--Java集合07

    Java集合07 14.HashMap底层机制 (k,v)是一个Node,实现了Map.Entry<K,V>,查看HashMap的源码可以看到 jdk7.0 的HashMap底层实现[数组 ...

  6. KingbaseESV8R6如何针对表单独设置vacuum策略

    背景 书接上文 KingbaseES应对表年龄增长过快导致事务回卷 ,有些特殊业务场景不能靠全局的autovacuum方法,例如大型数据库系统,频繁做update的系统,还有上文提到的做实时数据同步的 ...

  7. 利用京东云Web应用防火墙实现Web入侵防护

    摘 要 本指南描述如何利用京东云Web应用防火墙(简称WAF),对一个简单的网站(无论运行在京东云.其它公有云或者IDC)进行Web完全防护的全过程.该指南包括如下内容: 1 准备环境 1.1 在京东 ...

  8. 使用 Loki 进行日志报警(一)

    转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247492352&idx=1&sn=9c0cc7927b ...

  9. Pod原理

    Pod 是 Kubernetes 集群中最基本的调度单元,我们平时在集群中部署的应用都是以 Pod 为单位的,而并不是我们熟知的容器,这样设计的目的是什么呢?为何不直接使用容器呢? 为什么需要 Pod ...

  10. Beats:Beats 入门教程 (一)