python,day05笔记
上周内容回顾
-
数据类型
布尔值bool is_delete is_status 元组tuple t = (1,2,3,4,5) # 当容器类型里面只有一个元素的时候也应该将逗号加上 集合set s = {1,2,3,4,5,6,7,8} -
可变类型与不可变类型
id() 可变(列表、字典) 值改变内存地址不变 不可变(整型、浮点型、字符串) 值改变内存地址肯定变 -
与用户交互
获取用户输入 input # input获取到的数据都是字符串类型 输出结果 print # 可以一次性输出多个元素,逗号隔开即可 -
格式化输出
占位符:%s(可以给任意数据类型占位)、%d(只能给数字占位) 'my name is %s and my age is %s'%('jason',18) # 字符串里面有几个占位符,后续在给数据的时候就需要有几个真实数据 -
运算符
基本算数运算符 + - * / // % ** 增量赋值 x += 1 x -= 1 x *= 1 x /= 1 链式赋值 a = b = c = 666 交叉赋值 m = 10 n = 999 方式1:利用中间变量 tmp = m m = n n = tmp 方式2:交叉赋值 m,n = n,m 解压赋值 l = [11,22,33] # 默认情况下左右两边个数一定要相等 a,b,c = l # 打破限制 a,*_,b = l 逻辑运算 and 多个条件必须都成立 or 只要有一个成立 not 取反操作 身份运算 is 判断地址是否相等 == 判断值是否相同 值相等内存地址可能不等 内存地址如果相等值肯定相等 -
代码的缩进
python中利用代码的缩进来表示代码的从属关系 并不是所有的代码都可以有子代码的权限 属于同一个代码的多个子代码,子代码之间的缩进必须是相同的 # 遇到冒号说明接下来的代码需要缩进 -
流程控制之if判断
固定句式 if 条件1: 代码1 代码2 elif 条件2: 代码1 代码2 elif 条件3: 代码1 代码2 else: 代码1 代码2 """ 哪个条件成立就走哪个下面的子代码 其他的都不会执行 上述这些语句只会运行一个 """
今日内容概要
-
if判断结束
-
循环结构之while循环
-
循环结构之for循环
-
数据类型的内置方法
-
字符编码
理论非常的多,结论非常的少
今日内容详细
if判断
# if的嵌套(代码的缩进以及子代码从属关系)
# 如果女人的年龄小于28岁并且是漂亮的则上去要微信
# 如果给了则去看电影吃饭逛街 然后天黑了......
age = 26
is_beautiful = True
is_success = True
if age < 28 and is_beautiful:
print('小姐姐加个微信呗')
# 二次判断
if is_success:
print('我们去吃饭看电影逛街...天黑了')
else:
print('打扰了')
else:
print('不好意思认错人了')
循环结构之while循环
while true:
username = input('username:')
password = input('password:')
# 判断用户名和密码是否正确
if username == 'jason' and password == '123':
print('登陆成功')
else:
print('登录失败')
#固定句式
while 条件:
!@$!@
!%#$%
...
"""
当条件成立的时候会执行while子代码,子代码运行完毕之后
会再次回到条件判断处,判断条件是否成立,如果成立则继续执行
直到条件判断不成立,while循环结束
"""
# while + break
# 当用户输入错误可以反复输入,但是一旦用户输入正确则立刻结束while循环
# while True:
# username = input('username>>>:')
# password = input('password>>>:')
# # 判断用户名和密码是否正确
# if username == 'jason' and password == '123':
# print('登录成功')
# # 立刻结束while循环
# break
# else:
# print('用户名或密码错误')
"""
break 用于结束离它最近的哪个while循环
"""
# while + continue
# 循环打印1-10
# count = 1
# while count < 11:
# print(count)
# count += 1
# 循环打印1-10 不包括数字7
count = 1
while count < 11:
if count == 7:
count += 1
# 不打印(结束当前循环 直接开始下一次循环)
continue
print(count)
count += 1
"""continue:结束离它最近的本次while循环 直接开始下一次循环"""
# while嵌套
# 用户登录功能 当用户登录成功之后进入内部循环 获取用户的指令并执行
# while True:
username = input('username>>>:')
password = input('password>>>:')
# 判断用户名和密码是否正确
if username == 'jason' and password == '123':
print('登录成功')
# 进入内部循环
while True:
cmd = input('please input your command>>>:')
print('正在执行您的命令:%s'%cmd)
if cmd == 'q':
print('欢迎下次使用')
break
break
else:
print('用户名或密码错误')
'''
break 用于结束离它最近的哪个while循环
'''
# while + continue
循环打印1-10
count = 1
while count < 11:
print(count)
count += 1
# 循环打印1-10 不包括数字7
count = 1
while count < 11:
if count == 7:
count += 1
#不打印(结束当前循环 直接开始下一次循环)
continue
print(count)
count += 1
''' continue:结束离它最近的本次while循环 直接开始下一次循环'''
# while嵌套
# 用户登录功能:当用户登录成功之后进入内部循环 获取用户的指令并执行
while True:
username = input('username:')
password = input('password:')
# 判断用户名和密码是否正确
if (username == 'jason') and (pasword == '123')
print('登录成功')
# 进入内部循环
while True:
cmd = input('please input your command:')
print('正在执行宁的命令:%s'%cmd)
if cmd == 'q':
print('欢迎下次使用')
break
break
else:
print('用户名或密码错误')
for循环
for循环能够做到的事情while循环都可以实现
但是for循环比while循环语法更加的简单
# 循环打印1-10
# count = 1
# while count < 11:
# print(count)
# count += 1
# for循环
# for i in range(1, 11):
# print(i)
# for i in range(11):
# print(i)
"""
range(1,11) 会产生一个范围序列 可以直接看成是[1,2,3,4,5,6,7,8,9,10] 顾头不顾尾
range(11) 括号里面如果只有一个数字 那么开头默认从0开始
"""
l = [111, 222, 333, 444, 555, 666, 777, 888]
# while
# count = 0
# while count < 8:
# print(l[count])
# count += 1
# 遍历集合中的所有数据类型
# for
for num in l:
print(num)
"""
for循环不需要你自己给结束条件,for循环内部会自动结束
"""
# s = 'hello world'
# for i in s:
# print(i)
# 遍历字符串中的所有字符
d = {
'username': 'jason',
'password': 123,
'hobby': [111, 222]
}
# for循环字典的时候只会拿到字典的key (key : value)
for i in d:
print(i)
数据类型的内置方法
# 整型int
# 类型转换
# res = '123'
# print(type(res))
# 将字符串转换成整型
# res = int(res)
# print(type(res))
# 转换的时候需要注意 待转换的对象必须提前符合要转的数据类型格式
# res1 = 'hello'
# res1 = int(res1) 无法转
# 浮点型
res2 = '11.11'
# res2 = int(res2) # 无法转
res2 = float(res2) # float识别小数点 可以转
# 字符串
s = 'hello world'
# 类型转换 所有的数据类型都可以转换成字符
# str(123)
# str(11.11)
# str([1,2,3,4,5,6])
# str({'username':'jason','password':123})
# 索引取值
# print(s[0])
# 切片取值
# print(s[0:3]) # 从索引0开始切到索引2的为止 顾头不顾尾
# 步长(默认是1 2表示隔一个取一个)
# print(s[0:3:2])
# 统计长度
# print(len(s)) # 11
# 移除字符串首尾的字符
# username = input('username>>>:').strip()
# if username == 'jason':
# print('登录')
# else:
# print('失败')
# 字符串开头结尾有空格可以删除 strip()
# name = ' jason '
# print(len(name))
# 11 空格也算长度
# name = name.strip() # strip() 移除字符串首尾的空格
# print(len(name))
# name1 = '&&jas&&on&&'
# print(name1.strip('&')) # 括号内也可以自己指定移除首尾的字符
# print(name1.lstrip('&')) # jas&&on&&
# print(name1.rstrip('&')) # &&jas&&on
# 按照指定的字符切割字符串
# name_info = 'jason|123|read|China'
# res = name_info.split('|') # split切割之后是一个列表数据类型
# print(res) # ['jason', '123', 'read', 'China']
# res1 = name_info.split('|', maxsplit=1) # 从左往右切割指定个数的字符
# print(res1) # ['jason', '123|read|China']
# res2 = name_info.rsplit('|',maxsplit=2) # 从右往左切割指定个数的字符
# print(res2) # ['jason|123', 'read', 'China']
# 统计某个字符出现的个数
# info = 'name n a asd asdjklj a dsa dajd dasd'
# print(info.count('a')) # 8
# info1 = 'jason'
# 求出字符o的索引值
# print(info1.index('o')) # 3
"""
如果你想要知道更多的字符串方法
你只需要在pycharm中输入str加点即可查看
"""
# 字符串转大小写
# info = 'My NAME iS JasOn'
# print(info.upper()) # MY NAME IS JASON
# print(info.lower()) # my name is jason
# 字符串的格式化输出d
# 方式1 跟占位符
# res = 'my name is {} my age is {}'
# print(res.format('jason',18))
# 方式2 指定索引 并且前后个数可以不一致
# res = 'my name is {0} my age is {1} {0}{0}{0}'
# print(res.format('jason',18))
# 方式3: 指名道姓 并且前后个数可以不一致
# res = 'my name is {name} my age is {age} {name}{name}{name}'
# print(res.format(name='jason', age=18))
# 字典类型
# 类型转换
# res = dict(([1,2],(111,222)))
# print(res) # {1: 2, 111: 222}
d = {
'username': 'jason',
'password': 123,
'hobby': [111, 222, 333]
}
# 取值
# print(d['username'])
# print(d.get('username'))
# print(d['xxx']) # 没有直接报错
# print(d.get('xxx')) # None 不会报错 返回None提示信息
# 字典k:v键值对的个数
# print(len(d)) # 3
# 修改字典 键存在则修改 键不存在则添加新的
# d.update({'username': 'jasonDSB', 'age': 18})
# print(d)
# d['username'] = 'JasonNB' # 键存在修改
# d['age'] = 18 # 键存在修改
# print(d) # 无则添加
# 获取字典所有key
# print(d.keys()) # dict_keys(['username', 'password', 'hobby'])
# 获取字典所有value
# print(d.values()) # dict_values(['jason', 123, [111, 222, 333]])
# 获取字典的键值对 组织成元组的形式返回
# print(d.items()) # dict_items([('username', 'jason'), ('password', 123), ('hobby', [111, 222, 333])])
# 元组
t = (1, 2, 3, 4, 5, 6)
# print(len(t))
'''元组内元素不能被修改'''
# t[0] = 111 # 报错
'''拔高题'''
# t1 = (111, 222, 333, [11, 22])
# t1[-1].append(33)
# print(t1) # (111, 222, 333, [11, 22, 33])
"""
A 报错
B (111, 222, 333, [11, 22, 33])
C (111, 222, 333, [11, 22,], 33)
"""
# 集合
"""集合内元素必须是不可变类型"""
# s1 = {[111,222],1,2,3,4}
# print(s1) # 报错
# 去重 集合内不可能出现相同的元素
# s1 = {1,2,2,2,2,3,4,3,4,5,6,7,6,4,2,3,4,5,6,5,4}
# print(s1) # {1, 2, 3, 4, 5, 6, 7}
# l = ['jason', 'jason', 'egon', 'tony', 'jason']
# # 将列表转换成集合
# s1 = set(l)
# l = list(s1)
# print(l)
# ↑ 列表 集合可以相互换数据类型
# 关系运算
f1 = {'jason', 'egon', 'tony', 'tank'}
f2 = {'jason', 'egon', 'kevin', 'tom'}
# 求两者共同的好友 交集∩
print(f1 & f2) # {'jason', 'egon'}
# 求两者所有的好友 并集∪
print(f1 | f2) # {'tony', 'egon', 'tank', 'kevin', 'tom', 'jason'}
# 求用户1的独有好友 1补集
print(f1 - f2) # {'tony', 'tank'}
# 求用户2的独有好友
print(f2 - f1) # {'kevin', 'tom'}
浙公网安备 33010602011771号