Python学习笔记---day03 Python基础
day03 Python基础
课程目标:掌握Python基础中的必备语法知识
课程概要:
- 循环语句
- 字符串格式化
- 运算符(面试题)
1. 循环语句
while循环
for循环(后期)
while 条件:.........print(456)
1.1 循环语句基本属于
示例1:
print('开始')
while True:print('alex 是个小逗比')
print('结束')输出:
开始
alex 是个小逗比
alex 是个小逗比
alex 是个小逗比
....
示例2:
print('开始')
while 1 > 2:print('如果祖国遭受到侵犯,热血男儿当自强。')
print('结束')输出:
开始
结束
示例3:
data = True
print('开始')
while data:print('如果祖国遭受到侵犯,热血男儿当自强。')
print('结束')输出:
开始
如果祖国遭受到侵犯,热血男儿当自强。
如果祖国遭受到侵犯,热血男儿当自强。
如果祖国遭受到侵犯,热血男儿当自强。
...
示例4:
print('开始')
flag = True
while flag:print('滚滚黄河, 滔滔长江。')flag = False
print('结束')输出
开始
滚滚黄河, 滔滔长江。
结束
示例5:
print('开始')
num = 1
while num < 3:print('滚滚黄河, 滔滔长江。')num = 5print('结束')输出
开始
滚滚黄河, 滔滔长江。
结束
示例6:
print('开始')
num = 1
while num < 5:print('给我生命,给我力量')num += 1 # 相当于更新numprint('结束')输出
开始
给我生命,给我力量
给我生命,给我力量
给我生命,给我力量
给我生命,给我力量
结束
练习题:重复3次输出我爱我的祖国
print('开始')
n = 0
while n < 3:print('我爱我的祖国')n += 1print('结束')
1.2 综合小案例
请实现一个用户登录系统,如果密码错误则反复提示用户重新输入,直到输入正确,才退出。
print('开始运行路飞系统')
flag = True
while flag:username = input('请输入用户名:')pwd = input('请输入用户密码:')if pwd == '123' and username == 'liuxiaowei':print('登录成功!')flag = Falseelse:print('用户名或密码错误')
练习题
- 补充代码实现
猜数字,设定一个理想数字比如:66,一直提示用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有输入等于66,显示猜测结果正确,然后退出循环。
print('猜数字游戏开始!')
flag = True
try:while flag:num = input('请输入猜测的数字:')num = int(num)if num > 66:print('大了')elif num < 66:print('小了')else:print('猜对了')flag = Falseprint('游戏结束')
except:print('请输入数字!')
- 使用循环输出1-100所有整数
print('输出1-100')
n = 1
while n <= 100:print(n, end=' ')if n == 50:print(f'\n{n}',end=' ')n += 1
- 使用循环输出 1 2 3 4 5 6 8 9 10,即10以内除7以外的整数
print('输出10以内除7之外的整数')
n = 1while n < 10:if n != 7:print(n)n += 1
- 输出1-100内的所有偶数
print('1-100内偶数')n = 1
while n <= 100:if n % 2 == 0:print(f'偶数-{n}')n += 1
- 输出1-100内所有奇数
print('1-100以内奇数')
n = 1
while n <= 100:if n % 2 == 1:print(f'奇数-{n}')n += 1
- 输出1-100内的所有整数和
print('1-100整数和')
n = 1
sum = 0
while n <= 100:sum += nn += 1print(f'1-100整数和:{sum}')
7.输出10-1的所有整数
print('10-1所有整数')
n = 10
while n >= 1:print(n)n -= 1
1.3 break
break, 用于在while循环中帮助你终止循环。
print('开始')
while True:print('1')break # 终止循环print('2')
print('结束')输出:
1
结束
通过示例来更深入理解break的应用
示例1
print('开始')
while True:print('红旗飘飘,军号响。')breakprint('剑已出鞘, 电闪雷鸣。')print('从来都是狭路相逢勇者胜。')
print('结束')输出:
开始
红旗飘飘,军号响。
结束
示例2
print('开始')
i = 1
while True:print(i)i += 1if i == 101:break
print('结束')输出:
开始
1
2
3
...
100
结束
示例3
print('开始运行系统')
while True:user = input('请输入用户名:')pwd = input('请输入密码:')if user == 'liuxiaowei' and pwd == 'oldboy':print('登录成功')breakelse:print('用户名或密码错误,请重新登录')
print('系统结束')输出
开始运行系统
>>> 用户名
>>> 密码
正确,登录成功
系统结束不正确,一直循环
所以,以后写代码的时候,想要结束循环可以通过两种方式实现,即:条件判断和break关键字,两种在使用时无好坏之分,只要能实现功能就行。
1.4 continue
Continue,在循环中结束本次循环,开始下一次循环
print('开始')
while True:print(1)continueprint(2)
print('结束')输出:
开始
1
1
1
1
1
1
...
示例1
print('开始')
while True:print('红旗飘飘,军号响。')continueprint('剑已出鞘, 电闪雷鸣。')print('从来都是狭路相逢勇者胜。')
print('结束')输出:
开始
红旗飘飘,军号响。
红旗飘飘,军号响。
红旗飘飘,军号响。
红旗飘飘,军号响。
...
示例2
print('开始')
i = 1while i < 101:if i == 7:i += 1continueprint(i)i += 1print('结束')输出
开始
1
2
3
...
8
9
100
结束
示例3
print('开始')
i = 1while i < 101:if i == 7:i += 1continueprint(i)i += 1if i == 101:breakprint('结束')输出
开始
1
2
3
...
8
9
100
结束
写在最后,对于break和continue都是放在循环语句中用于控制循环过程的,一旦遇到break就停止所有循环,一旦遇到continue 就停止本次循环,开始下次循环。
1.5 while else
当while后的条件不成立时,else中的代码就会执行。
while 条件:代码
else:代码
while False:pass
else:print(123)
num = 1
while num < 5:print(num)num += 1
else:print(666)输出
1
2
3
4
666
while True:print(123)break
else:print(666)输出
123
2. 字符串格式化
字符串格式化,使用更便捷的形式实现字符串的拼接。
2.1 %
2.1.1 基本格式化操作
name = '刘小伟'
# 占位符
text = '我叫%s,今年49岁' %'刘小伟'
text = '我叫%s,今年49岁' %name
name = '刘小伟'
age = 18text = '我叫%s, 今年%s岁' %('刘小伟', 49)
text = '我叫%s, 今年%s岁' %(name, age)text = '我叫%s, 今年%d岁' %(name, age)
text = text = '我叫%s, 今年%d岁' %('刘小伟', 49)
message = '%s你什么时候过来呀?Alex今天不在家' %'死鬼'
message = '%(name)s你什么时候过来呀?Alex今天不在家' %{'name':'死鬼'}
message = '%(name)s你什么时候过来呀?%(person)s今天不在家' %{'name': '死鬼', 'person': 'Alex'}
2.1.2 百分比
text = '兄弟, 这个片我已经下载了90%了,居然特么断网了。'
print(text)
text = '%s, 这个片我已经下载了90%了,居然特么断网了。' %'兄弟'
print(text)Traceback (most recent call last):File "/Users/liuxiaowei/PycharmProjects/路飞全栈/day03/百分号格式化.py", line 5, in <module>text = '%s, 这个片我已经下载了90%了,居然特么断网了。' % '兄弟'
TypeError: not enough arguments for format string90% 当作占位符了# 解决办法
text = '%s, 这个片我已经下载了90%%了,居然特么断网了。' %'兄弟'
print(text)
一旦字符串格式化中出现百分比的显示,请一定要添加%%以实现输出%
2.2 format
text = '我叫{0}, 今年{1}岁'.format('刘小伟', 49)
print(text)
text = '我叫{0}, 今年{1}岁,真实的姓名是{0}'.format('刘小伟', 49)
print(text)
我叫刘小伟, 今年49岁,真实的姓名是刘小伟
text = '我叫{0}, 今年{1}岁,真实的姓名是{2}'.format('刘小伟', 49, '李小龙')
print(text)
我叫刘小伟, 今年49岁,真实的姓名是李小龙
text = '我叫{}, 今年49岁'.format('刘小伟')text = '我叫{}, 今年{}岁'.format('刘小伟', 49)text = '我叫{}, 今年{}岁, 真实姓名{}'.format('刘小伟', 49, '刘小伟')
text = '我叫{n1}, 今年49岁'.formta(n1='刘小伟')text = '我叫{n1}, 今年{age}岁'.formta(n1='刘小伟', age=49)text = '我叫{n1}, 今年{age}岁, 真实的姓名{n1}'.formta(n1='刘小伟', age=49)
text = '我叫{0}, 今年{1}岁'
data1 = text.format('刘小伟', 49)
data2 = text.format('Alex', 73)
text = '我叫%s, 今年%d岁'
data1 = text %('刘小伟', 49)
data2 = text %('Alex', 73)
2.3 f
到Python3.6版本,更便捷。
name = '嫂子'
action = '跑步'
text = f'{name}喜欢{action}, 跑完之后满身大汗'
name = '喵喵'
age = 19
text = f'嫂子的名字叫{name},今年{age}岁'
print(text)
text = f'嫂子的名字叫喵喵,今年{19+2}岁'
print(text)
text = f'嫂子的名字叫喵喵,今年{19+2=}岁'
print(text)
# 进制转换
v1 = '嫂子今年{22}岁'
print(v1)v1 = f'嫂子今年{22:#b}岁' # 二进制
print(v1)
v2 = f'嫂子今年{22:#o}岁' # 八进制
print(v2)
v3 = f'嫂子今年{22:#x}岁' # 十六进制
print(v3)输出:
嫂子今年0b10110岁
嫂子今年0o26岁
嫂子今年0x16岁
name = 'alex'
name = f'我是{name}, 我爱大铁锤'
name = f'我是{name.upper()}, 我爱大铁锤'
print(name)
3. 运算符
- 算数运算符,例如:加减乘除
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | a + b输出结果 30 |
- | 减 - 得到负数或是一个数减去另一个数 | a - b输出结果 -10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b输出结果为200 |
/ | 除 - x 除以 y | b/a输出结果为2 |
% | 取模 - 返回除法的余数 | b % a输出结果0 |
** | 幂 - 返回x的y次幂 | a ** b为10的20次方,输出结果为10000000000000000000000 |
// | 取整除 - 返回商的整数部分 | 9 // 2 输出结果为4,9.0 // 2.0 输出结果为 4.0 |
print( 9 // 2)
- 赋值运算符, 例如:变量赋值
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b将 a + b的运算结果赋值为c |
+= | 加法赋值运算符 | c += a 等效 c = c + a |
-= | 减法赋值运算符 | c -= a 等效 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效 c = c * a |
/= | 除法赋值运算符 | c /= a 等效 c = c / a |
%= | 取模赋值运算符 | c %= a 等效 c = c % a |
**= | 幂值赋值运算符 | c **= a 等效 c = c ** a |
//= | 取整赋值运算符 | c //= a 等效 c = c // a |
num = 1
while num < 100:print(num)num += 1
- 比较运算符, 例如:大于、小于
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b)返回False |
!= | 不等于 - 比较两个对象是否不相等 | (a != b)返回True |
<> | 不等于 - 比较两个对象是否不相等 | (a <> b)返回True, 这个运算符类似!= |
> | 大于 - 返回x是否大于y | (a > b)返回False |
< | 小于 - 返回x是否小于y | (a < b)返回True |
>= | 大于等于 - 返回x是否大于等于y | (a >= b)返回False |
<= | 小于等于 - 返回x是否小于等于y | (a <= b)返回True |
注意:Python3不支持<>
if 1 > 2:pass
while 1 > 2:passdata = 1 == 2
- 成员运算,例如:是否包含
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回True, 否则返回False | x 在y序列中,如果x在y序列中返回True |
not in | 如果在指定的序列中没有找到值返回True,否则返回False | x不在y序列中,如果x不在y序列中返回True |
v1 = 'le' in 'alex' # True/False
# 让用户输入一段文本,检测文本中是否包含敏感词
text = input('请输入内容:')
if '苍老师' in text:print('少儿不宜')
else:print('text')
- 逻辑运算,例如:且或非 and 、or、 not
运算符 | 描述 | 实例 |
---|---|---|
and | 布尔’与’ - 如果x为False, x and y 返回False,否则它返回y的计算值 | (a and b)返回True |
or | 布尔’或’ - 如果x是True, 它返回True,否则返回y的计算值 | (a or b) 返回True |
not | 布尔’与’ - 如果x为True, 它返回False,如果x为False,它返回True | not(a and b)则返回False |
if username == 'alex' and pwd == '123':passdata = 1 > 2
if not data:pass
3.1 运算符优先级
运算符的优先级有很多,常见的没几个,推荐你记住3个即可:
算数优先级大于比较运算符
if 2 + 10 > 11:print('True') else:print('False')
比较运算符优先级大于逻辑运算符
if 1 > 2 and 2 < 10:print('成立') else:print('不成立')
逻辑运算符内部三个优先级 not > and > or
if not 1 and 1 > 2 or 3 == 8:print('True') else:print('False')
上述这3个优先级从高到低总结:加减乘除 > 比较 > not and or 。绝招:加括号
3.2 面试题
逻辑运算: and or
v1 = name == 'alxex' and pwd = '123'
# v1 = True and Falseif name == 'alex' and pwd == '123':pass
v2 = 'liuxiaowei' and 'alxex'# 第一步:将and 前后的值转换为布尔值 True and True
# 第二步:判断本次操作取悦于谁?由于前面的是True,所以本次逻辑判断取决于后面的值
# 所以,后面的值等于多少最终结果就是多少。 v2 = 'alex'v3 = '' and 'alex'# 第一步:将and 前后的值转换为布尔值 False and True
# 第二步:判断本次操作取悦于谁?由于前面的是True,所以本次逻辑判断取决于前面的值
# 所以,后面的值等于多少最终结果就是多少。 v3 = ''v4 = 1 or 8
# 第一步:将or前后的值转换为布尔值 True or True
# 第二步:判断本次操作取悦于谁?由于前面的是True,所以本次结果取决于前面值
# 所以v4 =1v5 = 0 or 8
# 第一步:将or前后的值转换为布尔值 False or True
# 第二步:判断本次操作取悦于谁?由于前面的是False,所以本次结果取决于后面值
# 所以v5 = 8
练习题
v1 = 1 or 2
v2 = -1 or 3
v3 = 0 or -1
v4 = 0 or 100
v5 = '' or 10
v6 = 'liuxiaowie' or ''
v7 = 0 or ''
print(v1, v2, v3, v4, v5, v6, v7)# 输出
1
-1
-1
100
10
liuxiaowei
""注意:or看第一个值是True不用看后面了,结果就是第一个值。否则结果就是第二个值
v1 = 4 and 8
v2 = 0 and 6
v3 = -1 and 88
v4 = '' and 7
v5 = 'liuxiaowei' and ''
v6 = '' and 0
v7 = 0 and '中国'
print(v1, v2 , v3, v4, v5, v6, v7)# 输出
8
0
-1
""
liuxiaowei
0
0注意:第一个值如果是True,结果就是第二个值,否则也是第一个值
面试题
如果多个and 和or的情况,先计算and再计算or
v1 = 0 or 4 and 3 or 7 or 9 and 60 or 3 or 7 or 9 and 60 or 3 or 7 or 63 or 7 or 63 or 63v2 = 8 or 3 and 4 or 2 and 0 or 9 and 78 or 4 or 0 or 78 or 0 or 78 or 78v3 = 0 or 2 and 3 and 4 or 6 and 0 or 30 or 3 and 4 or 0 or 30 or 4 or 0 or 34 or 0 or 34 or 34# 输出
3
8
4
先计算not,再计算and,最后计算or
v4 = not 8 or 3 and 4 or 20 or 3 and 4 or 20 or 4 or 24 or 24# 输出
4
总结
- while循环语句
- break和continue 关键字的作用
- 三种字符串格式化的方式
- 基本运算符(逻辑运算涉及的相关面试题)
今日作业
判断下列逻辑语句的True,False
1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 # 解体步骤, 比较运算符优先级大于逻辑运算符 # 0 代表False 1代表True ''' 0 or 1 or 0 and 1 and 1 or 0 0 or 1 or 0 and 1 or 0 0 or 1 or 0 or 0 1 or 0 or 0 ''' not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6''' not 1 and 1 or 0 and 1 and 1 or 0 0 and 1 or 0 and 1 and 1 or 0 0 or 0 and 1 or 0 0 or 0 or 0 0 ''' # 输出True False
求出下列逻辑语句的值
8 or 3 and 4 or 2 and 0 or 9 and 7 0 or 2 and 3 and 4 or 6 and 0 or 3# 输出 8 4
下列结果是什么?
6 or 2 > 1 3 or 2 > 1 0 or 5 < 4 5 < 4 or 3 2 > 1 or 6 3 and 2 > 1 0 and 3 > 1 2 > 1 and 3 3 > 1 and 0 3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2# 输出 6 3 False 3 True True 0 3 0 2
实现用户登录系统,并且要支持连续输错之后直接退出,并且在每次输错时显示剩余错误次数(提示:使用字符串格式化)
# 实现用户登录系统,并且要支持连续输错之后直接退出,并且在每次输错时显示剩余错误次数(提示:使用字符串格式化)print('用户登录系统')n = 3 # 计数次数while True:user = input('请输入用户名:')pwd = input('请输入密码:')data = user == 'liuxiaowei' and pwd == '123'if data:print(f'{user}登录成功!')breakelse:n -= 1if n > 0:print(f'还有{n}次输入机会!')else:break# 另一种方法 """ n = 1 while n < 4:user = input('请输入用户名:')pwd = input('请输入密码:')if user == 'liuxiaowei' and pwd == '123':print('登录成功!')breakelse:n += 1message = f'用户名或者密码错误,剩余输入次数为{4-n}次'print(message)"""
猜年龄游戏
要求:允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出。
# 要求:允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出。 print('猜年龄游戏开始') print('最多运行尝试3次!!!')age = 88 n = 3while n > 0:num_guess = input('请输入猜测的年龄:')if int(num_guess) > age:print('大了')n -= 1elif int(num_guess) < age:print('小了')n -= 1else:print('恭喜你,猜对了!')break# 另一种方法 """ n = 0 while n < 3:n += 1age_guess = input('请输入猜测的年龄:')if int(age_guess) == 88:print('恭喜你猜对了!')else:print('猜错了')"""
猜年龄游戏升级版
要求:允许用户最多尝试3次,每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y,就继续让其猜3次,以此往复,如果回答N,就退出程序,如果猜对了,直接退出。
print('猜字游戏升级版')num = 88n = 3 while n > 0:num_guess = input('请输入猜测数字:')if int(num_guess) > 88:print('大了')n -= 1elif int(num_guess) < 88:print('小了')n -= 1else:print('恭喜你,猜对了!')breakif n == 0:answer = input('是否继续猜数游戏?(y/n)')if answer.lower() == 'y':n = 3else:break
Python学习笔记---day03 Python基础相关推荐
- Python 学习笔记 D1(基础)
Python 学习笔记 D1(基础) 1.注释 #一个注释 ''' 多行注释 ''' 2.运算符与C++相同:+,-,*,/,%,>,<,=,>=,<=,==,!= 与C++不 ...
- Python学习笔记 1.0 基础内容篇章
Python学习笔记 1.0 基础内容篇章 注释 变量 一.定义变量 二.使用变量 bug和debug bug: Debug工具: 数据类型 认识数据类型 在定义数据类型时发生的错误: 数据类型的补表 ...
- Python学习笔记之入门基础
课程链接:Python入门教程--基础阶段_哔哩哔哩_bilibili Python学习笔记 注释 单行注释: * 多行注释: 1.多行前面加# 2."""注释信息&qu ...
- python基础论文_北大博士Python学习笔记,Python基础语法总结,一篇文章带你入门...
image.png 网上现在Python学习资料有很多,但是很杂.很多初学Python的朋友就不知道该怎么去抉择,那些是自己当下所需要的. 刚好朋友是北大的博士,在IT行业也工作八年了.就把他学习Py ...
- Python学习笔记(一) Python基础
文章目录 1. 初始Python 1.1 Python安装 1.2 Python解释器 1.3 安装和配置PyCharm工具 2. 基础语法 2.1 注释 2.2 字面量 2.3 变量 2.4 标识符 ...
- 『Python学习笔记』Python中的异步Web框架之fastAPI介绍RestAPI
Python中的异步Web框架之fastAPI介绍&RestAPI 文章目录 一. fastAPI简要介绍 1.1. 安装 1.2. 创建 1.3. get方法 1.4. post方法 1.5 ...
- 『Python学习笔记』Python实现并发编程(补充joblibpymysql)
Python实现并发编程(补充joblib&pymysql) 文章目录 一. 并发编程知识点 1.1. 为什么引入并发编程 1.2. 如何选择多线程多进程多协程 1.2.1. 什么是CPU密集 ...
- 2022年最高效,踏实的Python学习笔记以及Python学习规划
一.学习建议 1.找到自己感兴趣的方向,并且结合市场需求进行选择 Python的应用范围 测试 运维 web 人工智能 大数据 爬虫及数据分析 办公自动化 2.学习过程中一定要勤加练习,并且尝试去使用 ...
- python学习笔记:python类和对象,文件操作,网络编程
目录 一.python面向对象 1.类和对象的定义 2.单继承 3.多继承 4.成员属性 5.异常 6.@property 二.python文件操作 文件的打开和读写 文件对象接口汇总 三.pytho ...
- Python学习笔记(13)-Python类与对象示例
点此查看 零基础Python全栈文章目录及源码下载 本文目录 1. 简介 2. Python类的定义 3. Python类的动态语言特性 4. Python类中属性的访问控制 1. 简介 Python ...
最新文章
- python爬虫实战,requests模块,Python实现抓取头条街拍美图
- PHPcms v9 get标签sql 语句limit无效问题的解决方法
- 中小学计算机教室设备维修记录,多媒体电教室的管理与设备的维护
- 7月30日 举办专注于微服务的.NET Conf Focus
- 99乘法表的四种位置类型for...in while
- 关于AdvancedDataGrid的header的数据传递
- Mysql学习总结(36)——Mysql查询优化
- SAP License:MES与ERP系统如何分工合作
- 大家推荐一下开源的博客和论坛整合在一起的.net系统
- html5游戏怎么做apk,如何把h5app打包成移动apk
- win7迁移系统0x0000007B蓝屏添加NVMe驱动解决
- JSLint中常见报错提示
- 在K8s上轻松部署Tungsten Fabric的两种方式
- 用jQuery实现旋转木马效果(带前后按钮和索引按钮)
- 【Shell】测试脚本
- 思岚发布新品TOF激光雷达——RPLIDAR S1 性能更强、更稳定
- 工业互联 智造未来 “2018 智造中国峰会•上海松江” 在上海市松江区隆重召开
- 单片机之动态数码管篇
- 全球与中国IHE XDS.B(跨企业文档共享)市场现状及未来发展趋势
- flume启动失败:org.apache.flume.ChannelException: Put queue for MemoryTransaction of capacity 10000 full