一、in的使用
说明:in有相当多的用处,比如判断,循环for 等。
实例一:in 操作符用于判断关键字是否存在于变量中
s = '男人john' print('男孩' in s) print('男孩john' in s) print('男人jo' in s) print('wusir' not in s)
执行后输出结果为:
注意:in是整体匹配,不会拆分匹配。
示例:
a = '男孩John' print('男孩sir' in a)
执行输出:False
实例二:in 做关键字匹配
comment = input('请输入你的评论:') if '苍井空' in comment: print('您输入的敏感词汇,请重新输入')
执行后输出:
请输入你的评论:苍井空
您输入的有敏感词汇,请重新输入
二、while else的使用
说明:while else 如果循环被break打断,程序不会走else
实例一:
count = 1 flag = True while flag: print(count) if count == 3: flag = False count += 1 else: print('循环结束')
执行输出:
1
2
3
循环结束
示例二:
count = 1 while True: print(count) if count == 3: break #这里设置为当它执行第三次的时候直接退出不执行 count += 1 #else: # print('循环结束')
执行输出:
1 2 3
三、格式化输出
比如用户输入信息后,输出一段话
msg = '我叫嘉豪,今年26岁,喜欢Fight'
第一种替换方式 (元祖类型--替换)
#% 占位符 s str 字符串 d digit 数字 name = input('请输入你的姓名:') age = input('请输入你的年龄:') hobby = input('请输入你的爱好:') msg = '我叫%s,今年%d岁,爱好%s' % (name,int(age),hobby) print(msg)
执行输出:
请输入你的姓名:嘉豪 请输入你的年龄:26 请输入你的爱好:Fight 我叫嘉豪,今年26岁,爱好Fight
第二种替换方式 (字典类型--替换)
定义一个字典
dic = {'name':'Tom','age':51,'hobby':'无所谓'}
完整代码如下:
dic
=
{
'name'
:
'Tom'
,
'age'
:
51
,
'hobby'
:
'无所谓'
}
msg
=
'我叫%(name)s,今年%(age)d岁,爱好%(hobby)s'
%
dic
print
(msg)
输出结果:
我叫Tom,今年51岁,爱好无所谓
格式化输出,就是做固定模板填充
第三种替换方式(字符转换)
name
=
input
(
'请输入你的姓名:'
)
age
=
input
(
'请输入你的年龄:'
)
msg
=
'我叫%s,今年%d岁,学习进度为1%'
%
(name,
int
(age))
print
(msg)
执行报错
ValueError: invalid literal for int() with base 10: 'sf'
#在格式化输出中单纯的显示% 用%% 解决
name = input('请输入你的姓名:') age = input('请输入你的年龄:') msg = '我叫%s,今年%d岁,学习进度为1%%' % (name,int(age)) print(msg)
执行输出
请输入你的姓名:zhang 请输入你的年龄:21 我叫zhang,今年21岁,学习进度为1%
第三种替换方式 (format 格式化输出)
name = input('请输入你的姓名:') age = input('请输入你的年龄:') hobby = input('请输入你的爱好:') msg = '我叫{},今年{}岁,我的爱好是{},学习进度1%'.format(name,int(age),hobby) print(msg)
输出结果:
请输入你的姓名:嘉豪 请输入你的年龄:26 请输入你的爱好:Fight 我叫嘉豪,今年26岁,我的爱好是Fight,学习进度1%
四、逻辑运算符
说明:在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。
and or not
第一种:前后都是比较运算
优先级:() > not > and > or
注意:同一个优先级,从左至右依次计算。false and 任何条件,都是false
print(1 > 2 and 3 < 4)
执行输出: False
print(1 > 2 and 3 < 4 and 3 > 2 or 2 < 3)
执行输出: True
第二种:前后都是数字运算
注意:
x or y , x为真,值就是x,x为假,值是y;
x and y, x为真,值是y,x为假,值是x。
非0的数字,都是真
print(1 or 3) print(2 or 3) print(0 or 3) print(-1 or 3)
执行输出:
1 2 3 -1
在or中,只要有真,结果必定为真。
False or True 结果为True
print(1 and 2)
执行输出: 2
print(1 and 2) print(0 and 2)
执行输出:
2
0
第三种,混合
print(1 > 2 or 3 and 4)
执行输出: 4
print(1 > 2 or 3 and 4) print(2 or 2 > 3 and 4)
执行输出:
4
2
五、数据类型的转换
int与布尔值的转换
int --> bool 非0即True,0为False
bool --> int True 1 False 0
print(int(True))
执行输出:1
print(int(True)) print(int(False)) print(bool(100)) print(bool(0))
执行输出:
1
0
True
False
六、编码
编码很重要,总会遇到编码的问题
1,发电报:滴滴滴滴 实际是高低电平。
密码本:
今 0000 0001 天 0000 0101 喝 0000 0011 酒 0000 1100 去 0001 1010 呀 0001 0001
0010010 1000011 1100101 010001
2,计算机在存储,和传输的时候, 01010101
初期密码本:
asiic 包含数字,英文,特殊字符。八位
01000001 01000010 01000011 A B C
8位 = 1 byte 表示一个字符。
ascii最左1位都是0,为了拓展使用的。
ASCII码表里的字符总共有256个
前128个为常用的字符如运算符
后128个为 特殊字符是键盘上找不到的字符
万国码unicode,将所有国家的语言包含在这个密码本。
初期:16位,两个字节,表示一个字符。
A : 00010000 00010010
中: 00010010 00010010
升级:32位,四个字节,表示一个字符。
A : 00010000 00010010 00010000 00010010
中: 00010010 00010010 00010010 00010010
32位资源浪费。
升级:utf-8。最少用8位(一个字节),表示一个字符。
英文:a :00010000 用8位表示一个字符。
欧洲:00010000 00010000 16位两个字节表示一个字符。
亚洲 中 :00010000 00010000 00010000 24位,三个字节表示一个字符。
utf-16 不常用,最少用16位
gbk:国标。
只包含:英文中文。
英文:a :00010000 8位,一个字节表示一个字符。
中文:中:00010000 00010000 16位,两个字节表示一个字符。
gb2312 也是国标的一种
单位换算
8 bit = 1 byte
1024 byte = 1 kb
1024 kb = 1 MB
1024 MB = 1 GB
1024 GB = 1 TB
作业:
题目一:判断下列逻辑语句的True,False.
1、1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
答:True
2、not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
答:False
题目二、求出下列逻辑语句的值。
1、8 or 3 and 4 or 2 and 0 or 9 and 7
答:8
2、0 or 2 and 3 and 4 or 6 and 0 or 3
答:4
题目三、下列结果是什么?
(1)、6 or 2 > 1
答:6
(2)、3 or 2 > 1
答:3
(3)、0 or 5 < 4
答:False
(4)、5 < 4 or 3
答:3
(5)、2 > 1 or 6
答:True
(6)、 and 2 > 1
答:True
(7)、0 and 3 > 1
答:0
(8)、2 > 1 and 3
答:3
(9)、3 > 1 and 0
答:0
(10)、3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2
答:2
题目4. 简述变量命名规范
变量是由数字,字母,下划线,任意组合。 变量不能以数字开头。 不能是python中的关键字。 不能太长,不能是中文,要有描述性。 官方推荐: 下划线命名法,单词之间用下划线连接。
题目5. name = input(“>>>”) name变量是什么数据类型?
字符串类型(str)
题目6. if条件语句的基本结构?
# 第一种: if 条件: 结果 # 第二种(真假判断): if 条件: 结果 else: 结果 # 第三种(条件判断): if 条件: 结果 elif: 结果 # 第四种 (多条件判断): if 条件: 结果 elif 条件: 结果 else: 结果 # 第五种(嵌套法): if 条件: if 条件: 结果 结果
7. while循环语句基本结构?
while 条件: 结果
8. 写代码:计算 1 - 2 + 3 ... + 99 中除了88以外所有数的总和?
count = 0 sum = 0 while count < 99: count += 1 if count == 88: continue print(count) if count % 2 == 0: sum -= count else: sum += count print(sum)
9. 用户登录(三次输错机会)且每次输错误时显示剩余错误次数(提示:使用字符串格式化)
count = 0 name = 'jiahao' pwd = '123' while count <= 2: username = input('请输入你的用户名:') password = input('请输入用户密码:') if username == name and password == pwd: print('登录成功!') break else: print('登录失败!') count += 1 num = 3 - int(count) #print('您还有{}次机会'.format(3 - int(count))) if num == 2: print('您还有{}次机会'.format(num)) elif num == 0: print('您已经没有机会了!') else: print('您只有最后一次机会了,请珍惜!')
执行结果:
#结果一: 请输入你的用户名:jiahao 请输入用户密码:123 登录成功!
请输入你的用户名:1 请输入用户密码:1 登录失败! 您还有2次机会 请输入你的用户名:2 请输入用户密码:2 登录失败! 您只有最后一次机会了,请珍惜! 请输入你的用户名:3 请输入用户密码:3 登录失败! 您已经没有机会了!
10. 简述ascii、unicode、utf-8编码关系?
ascii 是最早美国用的标准信息交换码,把所有的字母大小写,各种符号用 二进制来表示,共有256种,同时加入拉丁文等字符,1bytes代表一个字符。
Unicode是为了统一世界各国语言的不同,统一用2个bytes代表一个字符,可以表达2**16=65556个,称为万国语言,特点:速度快,但浪费空间,
可以用在内存处理中,兼容了utf-8,gbk,ASCII。
utf-8 为了改变Unicode的这种缺点,规定1个英文字符用1个字节表示,1个中文字符用3个字节表示,
特点;节省空间,速度慢,用在硬盘数据传输,网络数据传输,相比硬盘和网络速度,体现不出来。
11. 简述位和字节的关系?
位:二进制位(bit)是计算机存储信息的基本单位,代表1个二进制数位,其值为0或1。
字节:8个连续的二进制位为一个字节,可以存放1个西文字符的编码。
12. "老男孩"使用UTF-8编码占几个字节?使用GBK编码占用几个字节?
注意:在utf-8中,一个中文字符占用3个字节。在GBK中,一个中文字符占用2个字节
答案为9和6
13. 制作趣味模板程序需求:等待用户输入名字、地点、爱好,根据用户的名字和爱好进行任意现实 如:敬爱可亲的xxx,最喜欢在xxx地方干xxx
name = input('请输入你的名字:') adders = input('请输入你的地址:') hobby = input('请输入你的爱好:') msg = '敬爱可亲的{}.最喜欢在{},干{}'.format(name,adders,hobby) print(msg)
14. 等待用户输入内容,检测用户输入内容中是否包含敏感字符?如果存在敏感字符提示“存在敏感字符请重新输入”,并允许用户重新输入并打印。敏感字符:"小粉嫩"、"大铁锤"
#方法一: while True: name = input('请输入你的名字:') adders = input('请输入你的地址:') hobby = input('请输入你的爱好:') msg = '敬爱可亲的{}.最喜欢在{},玩{}'.format(name, adders, hobby) flag = False comment = ['小粉嫩','大铁锤' ] if '小粉嫩' and '大铁锤' in msg: print('您输入的信息中带有敏感词汇,请重新输入') flag = False else: print(msg) break #方法二: keyword = ["⼩粉嫩","⼤铁锤"] while True: comment = input('请输入评论:') for f_key in keyword: if f_key in comment: print('您输入的信息中带有敏感词汇,请重新输入:') else: print('发表成功!') break
15. 单行注释以及多行注释?
单行注释:使用符号#
多行注释:使用符号""" """ 和''' '''
16. 简述你所知道的Python3和Python2的区别?
1.源码风格不一样
python2 源码混乱,重复代码较多。
python3 源码规范,优美清新简单。
2.print方法有区别
python3的print方法,必须要加括号
3.默认编码不一样
python 3x 默认编码:utf-8
python 2x 默认编码: ascii
4.input不同
python 2x: raw_input()
python 3x: input()
17. 看代码书写结果:
a = 1>2 or 4<7 and 8 == 8
print(a)
先执行and部分4<7 and 8 == 8 ,4<7 结果为True 。8 == 8 结果为True 。那么and部分的结果为True
那么就剩下1 > 2 or True,最终结果为 True
18.continue和break区别?
breck:结束循环
continue:结束本次循环,继续下一次循环。
Day3默写代码:
Bit,Bytes,Kb,Mb,Gb,Tb之间的转换关系。
8 bit = 1 byte
1024 byte = 1 kb
1024 kb = 1 MB
1024 MB = 1 GB
1024 GB = 1 TB