【修仙】第一卷 初出茅庐 第六章 初入蛇门3
前情提要
列表list
能够存储多个数据值 可以方便的调用整体或局部
# 语句
l1 = [11, 11.2, '123', [1, 2, 3]]
分析:由中括号将数据括起来,数据见用逗号隔开,有序
数据类型:可以存任意类型
书写规范:数据与前一个逗号间有一个空格
取值方式:索引取值
# 索引取值
l1 = [11, 11.2, '123', [1, 2, 3]]
print(l1[0]) # 11
print(l1[1]) # 11.2
print(l1[2]) # '123'
字典dict
能够存储多个数据值,每个数值都有对应的说明
# 语句
d1 = {'name': 'jason', 'age': 123, 'name_list': ['jason', 'kevin', 'tony']}
分析:由大括号将数据括起来,数据以键值对的形式存在,数据键用逗号隔开,无序
数据类型:可以存任意数据
书写规范:键值对中v与:之间有一个空格,键值对与前一个逗号间有一个空格
取值方式:键值对取值
# 键值对取值
d1 = {'name': 'jason', 'age': 123, 'name_list': ['jason', 'kevin', 'tony']}
print(d1['name']) # jason
print(d1['age']) # 123
print(d1['name_list']) # ['jason', 'kevin', 'tony']
print(d1['name_list'][0]) # jason
布尔值bool
只有两种结果 True 和 False
数据类型转换:
在以下情况为False
0 None 空列表 空字典 ...
其余情况都为True
# 布尔值命名规范
is_delete = True # 君子协定 is开头
元组tuple
不能修改的‘列表’
集合set
使用的括号与字典相同,但内部结构不一样
d1 = {'name': 'jason', 'age': 18} # 字典
s1 = {1, 2, 3, 4, 5, 6, 7} # 集合
# 定义空集合的方法:
ss = set() # 只能这样生成空集合 直接定义默认为字典
与用户交互
输出:print()
可一次性打印多个值
还能指定参数
print(11, '123', 'asd') # 11 123 asd
print(11, end='0') # 110
输入:input()
输入的内容都是字符串
num = input('input a number>>>:')
print(type(num))
input a number>>>:1
<class 'str'>
格式化输出
需提前准备好文本 之后再利用占位符格式化输出内容
info = """
你好 %s,恭喜你获得了本次活动的%s等奖,获得%s津巴布韦币,以及%s元兰博基尼代金券
"""
print(info % ('jason', 1, 100000000, 5)) # 你好 jason,恭喜你获得了本次活动的1等奖,获得100000000津巴布韦币,以及5元兰博基尼代金券
占位符常用的有两种
%s 能够给所有的数据占位
%d 只能给整型的数据占位
基本运算符
+ - * / % // **
多钟赋值操作
# 链式赋值
x = y = z = 10
# 交叉赋值
m = 10
n = 20
m, n = n, m
print(n, m) # 1o 2o
# 解压赋值
l1 = ['jason', 123, '上海', '金牌讲师']
name, age, city, job = l1
print('name') # jason
print('age') # 123
print('city') # 上海
print('job') # 金牌讲师
概
-
作业讲解
-
运算符补充
-
流程控制理论
-
流程控制详细语法 **
详
作业讲解
注:写代码养成注释的习惯 尤其是前期 可以先写注释 再写内容 最后不要忘了代码格式化
作业1.获取用户信息并打印出下列格式
------------ info of XXX -----------
Name : XXX
Age : XXX
gender : XXX
Job : XXX
------------- end -----------------
# 1.格式化输出:提前准备文本
info = """
------------ info of %s -----------
Name : %s
Age : %s
gender : %s
Job : %s
------------- end -----------------
"""
# 2.获取用户数据
name = input('please input your username>>>:')
age = input('please input your age>>>:')
gender = input('please input your gender>>>:')
job = input('please input your job>>>:')
# 3.格式化输出
print(info % (name, name, age, gender, job))
作业2.自行研究输入输出在python2和python3中的区别
1.输入的区别
python3中input()输入的值最终都会变为字符串
python2中有两种input()方法
1.input()
输入的值保持原有的数据类型
2.raw_input()
与python3中的input()相同
# 输入的区别
# python2
>>> name = input()
123
>>> print(type(name))
<type 'int'>
>>> name = input()
'asd'
>>> print(type(name))
<type 'str'>
2.输出的区别
python3只有一种输出print()
python2有两种输出 print print()
# 输出的区别
# python2
>>> print 123
123
>>> print(123)
123
运算符补充
逻辑运算符
and 与
or 或
not 非
and 连接的多个条件必须都成立结果才成立(True)
or 连接的多个条件有一个成立结果就成立(True)
not 将条件取反(原本是对的就变成错的 如果是错的就变成对的)
1 == 1 and 2 > 10 and 3 != 6 and True and 10 < 2 # False
"""如果所有的连接符号都是and 那么判断的时候只要看到一个False就停止"""
1 != 1 or 2 or False or 3 < 2 or 10 < 1 # True
"""如果所有的连接符号都是or 那么判断的时候只要看到一个True就停止"""
注:三者混合使用有优先级
优先级是 not > and > or
有括号则先算括号内
print(1 != 1 or (2 > 3 or 3 > 2) and not 9 > 8) # False 先算括号内和not变为: False or Ture and False 再算and: False or False
成员运算符
in 在什么什么之内
not in 不在什么什么之内
# 判断一个人是否在列表中
l1 = ['jason', 'kevin', 'tony', 'oscar']
print('jason' in l1) # True
print('ja' in l1) # False
print('jason kevin' in l1) # False
"""列表再做成员运算的时候最小单位是数据值整体 不能再拆分或拼接"""
s1 = 'hello world'
print('h' in s1) # True
print('he' in s1) # True
print('hello ' in s1) # True
print('hl' in s1) # False
"""字符串在做成员运算的时候最小单位是单个字符 可以添加字符个数"""
d1 = {'name': 'jason', 'age': 18, 'job': 'gold pai talk teacher'}
print('jason' in d1) # False
print('name' in d1) # True
"""字典在做成员运算的时候只有K会参与运算 V默认不暴露给外界"""
成员运算符
is 判断数据值的内存地址是否一致(火眼金睛)
== 判断数据值得值是否一致 地址无所谓
注:id():该方法会返回一串数字 相当于内存地址
l1 = [11, 22, 33]
l2 = [11, 22, 33]
print(id(l1)) # 2038899532032
print(id(l2)) # 2038899522816
print(l1 is l2) # False
print(l1 == l2) # True
"""
值相等 内存地址可能不等
内存地址相等 值肯定相等(单次程序中)
"""
l1 = 10
l2 = 10
print(id(l1)) # 140721704142784
print(id(l2)) # 140721704142784
print(l1 is l2) # True
print(l1 == l2) # True
"""python针对数据量较小的并且经常使用的整数会做内存优化:小整数池"""
# pycharm 中
l1 = 999999
l2 = 999999
print(id(l1)) # 1431584176400
print(id(l2)) # 1431584176400
print(l1 is l2) # True
print(l1 == l2) # True
# cmd控制面板中
>>> l1 = 999999
>>> l2 = 999999
>>> print(id(l1))
2093917367120
>>> print(id(l2))
2093917367184
>>> print(l1 is l2)
False
>>> print(l1 == l2)
True
"""
有时候IDE编辑工具也会做更多的优化处理
上述代码使用翻译器直接运行 地址不一样
"""
流程控制理论
1.流程控制的概念
本质就是事物的执行流程 事物的执行流程总共就三种
1.顺序结构
从上往下依次执行 我们之前缩写的代码都是顺序结构 2.分支结构
根据条件的不同执行不同的代码
3.循环结构
根据条件的判断觉得是否一直做某些事
储备知识
1.python种使用代码的缩进来表示代码的从属关系
缩进的代码是否运行取决于上面没有缩进的父代码
2.缩进量其实没有要求 只要缩进了即可
但是为了美观 一般推荐4个空格
3.并不是所有的代码都可以拥有子代码
if关键字 else关键字 elif关键字(else elif不能单独使用)
4.同属于一个父代码的多行代码缩进量应保证相同
如果代码缩进了 那就必须往上找一个缩减量比他小的代码作为父代码
如果父代码可以拥有子代码 那么没有问题 不可以则报错
5.相同缩进量的代码彼此之间没有主次之分 都是按照顺序依次执行
流程控制之分支结构
在python中如果想要编写分支结构 那么需要使用关键字1f
1.单if分支
语法:if 条件:
条件成立后执行的代码(子代码)
# 如果女人年龄小于30叫小姐姐
# 1.定义女人的年龄
age = 28
# 2.通过if语句判断女人的年龄
if age <= 30:
# 3.条件成立所执行的命令
print('小姐姐博客园加一下')

2.if-else分支
语法:
if 条件:
条件成立后执行的代码
else:
条件不成立后执行的代码
# 1.获取用户名和密码
name = input('input your nmae>>>:')
pwd = input('input your password>>>:')
# 2.判断账号秘密是否正确
if name == 'jason' and pwd == 123:
# 3.账号密码正确执行的命令
print('开始写博客')
else:
# 4.账号密码错误执行的命令
print('赶紧创个账号然后开始写博客')

3.if-elif-else分支
语法:
if 条件1:
条件1成立执行的命令
elif 条件2:
条件1不成立 条件2成立执行的命令
elif 条件3:
条件1和2都不成立 条件3成立执行的命令
...
else:
上述条件都不成立 执行的命令
# 1.输入一个分数并用int()转换为整型
score = int(input('input your score>>>:'))
# 2.判断分数给出回复
if score > 90:
print('优秀!写一篇博客继续保持')
elif score > 80:
print('不错!写一篇博客提提成绩')
elif score > 70:
print('还行!多写写博客提高成绩')
elif score > 60:
print('及格!罚你写博客提升成绩')
else:
print('可惜!写十篇博客继续保持')

作业
# 1.女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨好
# 输入年龄 体重 身高 外貌
age = int(input('input your age>>>:'))
weight = int(input('input your weight>>>:'))
height = int(input('input your height>>>:'))
face = input(r'input your face(beautiful\ugly)>>>:')
if 18 <= age < 22 and weight < 100 and height > 170 and face == 'beautiful':
print('快表白,然后一起写博客')
else:
print('阿姨好,写博客吗')
# input your age>>>:18
# input your weight>>>:84
# input your height>>>:171
# input your face(beautiful\ugly)>>>:beautiful
# 快表白,然后一起写博客
# 2.根据用户输入内容打印其权限
'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''
# 1.创建一个以名字为k 职位为v的字典
user_dict = {'jason': '超级管理员', 'tom': '普通管理员', 'jack': '业务主管', 'rain': '业务主管'}
name = input('input your name>>>:')
# 2.判断用户是否在字典中
if name in user_dict:
print(user_dict[name])
else:
print('普通用户')
# 3.编写用户登录程序
"""
要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
eg:black_user_list = ['jason','kevin','tony']
如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
eg: oscar 123
"""
black_user_list = ['tony', 'jack', 'rose']
user_list = {'jason': '123', 'tony': '228', 'jack': '521', 'rose': '520', 'tom': '888'}
name = input('input your name>>>:')
pwd = input('input your password>>>:')
if name not in black_user_list:
if name in user_list and pwd == user_list[name]:
print('LOGIN SUCCESSFUL')
else:
print('WRONG USERNAME OR PASSWORD')
else:
print('YOU ARE IN BLACK LIST')
浙公网安备 33010602011771号