Python使用入门(二)
循环语句
while循环
while 条件:
...
...
...
示例 1
print("123")
while True:
print("hello")
print("end")
#输出
123
hello
hello
hello
...
示例2
print("123")
flag = True
while flag:
print("hello")
flag = False
print("end")
输出:
123
hello
end
示例3
print("123")
num = 1
while num < 5:
print("hello")
num = num + 1
print("end")
输出
123
hello
hello
hello
hello
end
break
1.break用于在while循环中立即终止循环,无论条件是否满足。
2.break的作用是立即终止当前循环,并跳出循环体,不再执行循环体内的后续代码。
示例1
print("开始")
num = 1
while num < 4:
print("我爱我的祖国")
num = num + 1
if num == 2:
break
print("hhhh")
print("结束")
输出:
开始
我爱我的祖国
结束
continue
1.continue关键字用于在循环中结束本次循环,开始下一次循环。
2.与break不同,continue不会终止所有循环,只是结束当前循环。
示例
print("开始")
i = 1
while True:
if i == 7:
i = i + 1
continue
print(i)
i= i + 1
if i == 101:
break
print("结束")
输出
开始
1
2
3
4
5
6
8
...100
结束
while else
用的很少
当while循环后的条件不成立时,else块中的代码会执行。
示例
num = 1
while num < 4:
print("我爱我的祖国")
num = num + 1
else:
print("666")
输出:
我爱我的祖国
我爱我的祖国
我爱我的祖国
666
字符串格式化
字符串格式化是指通过更便捷的方式实现字符串之间的拼接。
%
基本格式化
name = "小路"
# 占位符
text = "我叫%s,今年20岁" % "小红"
text1 = "我叫%s,今年20岁" % name
print(text)
print(text1)
#多个占位符
name1 = "小路"
age1 = 20
# 占位符
text4 = "我叫%s,今年%s岁" % ("小红", "20")
text5 = "我叫%s,今年%s岁" % (name1, age1)
text6 = "我叫%s,今年%d岁" % (name1, age1)
print(text4)
print(text5)
print(text6)
#根据名字的占位符
msg = "%(name)s去吃饭了吗?还是去哪玩了吗" % {"name": "小路"}
print(msg)
msg2 = "%(name)s去吃饭了吗?还是去%(place)s玩了吗" % {"name": "小路","place":"网吧"}
print(msg2)
# 模板可以复用
text = "我是%s,今年%s岁"
text1 = text % ("小路", 18)
text2 = text % ("小lu", 17)
print(text1)
print(text2)
百分比处理
# 在百分号格式化中,百分比符号(%)需要特殊处理,以避免歧义。
# 如果文本中包含百分比符号,并且需要进行格式化,需要使用两个百分号来表示。
msg3 = "%s,这片儿我已经下载了%90了,居然断网了" % "兄弟" #报错.
msg4 = "%s,这片儿我已经下载了%%90了,居然断网了" % "兄弟" #正确
print(msg4)
format(推荐)
通过位置替换占位符
text1 = "我是{0},今年18岁".format("小路")
print(text1)
text2 = "我是{0},今年{1}岁,明年{2}岁".format("小路", 18, "19")
print(text2)
# 复用
text3 = "我是{0},今年{1}岁,明年还叫{0}".format("小路", 18)
print(text3)
#占位符
text1 = "我是{},今年18岁".format("小路")
print(text1)
#默认从前往后算,默认加{0},{1 }
text2 = "我是{},今年{}岁".format("小路",18)
print(text2)
# 没办法复用,要接着写。
text2 = "我是{},今年{}岁,真实姓名叫{}".format("小路", 18, "小路")
print(text2)
通过名称替换占位符
text1 = "我叫{sb},今年18岁".format(sb="小路")
print(text1)
text2 = "我叫{sb},今年{age}岁".format(sb="小路", age=19)
print(text2)
#也可以复用
text3 = "我叫{sb},今年{age}岁,真实姓名叫{sb}".format(sb="小路", age=19)
print(text3)
#模板可以复用
text ="我是{0},今年{1}岁"
print(text.format("小路",19))
print(text.format("小露",17))
f
python3.6版本之后,更便捷
占位符
action = "跑步"
text = f"小路喜欢{action},跑完满身大汗"
print(text)
name = "xiaolu"
age = 20
text1 = f"嫂子的名字叫{name},今年{age}岁"
print(text1)
支持表达式
# 支持表达式
text2 = f"{name}今年{age + 1}岁,明年{22 + 3}岁"
print(text2)
#输出
#xiaolu今年21岁,明年25岁
python3.8之后支持
# python3.8引入 加 = 把表达式和结果都输出
text3 = f"{name}今年{age + 1}岁,明年{22 + 3=}岁"
print(text3)
#结果:
#xiaolu今年21岁,明年22 +3=25岁
进制转换
#进制转换
v1=f"嫂子今年{22}岁"
print(v1)
#转为二进制
v2=f"嫂子今年{22:#b}岁"
print(v2)
#转为二进制 不带进制符号
v21=f"嫂子今年{22:b}岁"
print(v21)
#转为八进制 带进制符号
v3=f"嫂子今年{22:#o}岁"
print(v3)
#转为16进制
v4=f"嫂子今年{22:#x}岁"
print(v4)
#转为16进制
v41=f"嫂子今年{22:x}岁"
print(v41)
输出:
嫂子今年22岁
嫂子今年0b10110岁
嫂子今年10110岁
嫂子今年0o26岁
嫂子今年0x16岁
嫂子今年16岁
#也可以使用函数
name="xiaoming"
v5 =f"我是{name.upper()},今年18岁"
print(v5)
#结果:
#我是XIAOMING,今年18岁
运算符
算术运算符
如 a=10 b=20
运算符 | 描述 | 实例 |
+ | 加-两个对象相加 | a+b的输出结果为30 |
- | 减-得到负数或者一个数减去另一个数 | a-b的输出结果为-10 |
* | 乘-两个数相乘或是返回一个被重复若干次的字符串 | a*b的输出结果为200 |
/ | 除-x除以y | b/a的输出结果为2.0 |
% | 取模-返回除法的余数 | b%a的输出结果为10 |
** | 幂-返回x的y次幂 | a**b为10的20次放,结果为100000000000000000000 |
// | 取整除-返回商的整数部分 | a//b的输出结果为0,9/2的结果为4.5,9//2的结果为4 |
比较运算符
运算符 | 描述 | 实例 |
== | 等于-比较对象是否相等 | (a==b)返回False |
!= | 不等于-比较对象是否不相等 | (a!=b)返回True |
<> | 不等于-比较对象是否不相等 | 和a!=b类似 |
> | 大于-返回x是否大于y | (a>b)返回False |
< | 小于-返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。与Ture和False等价。 | (a<b)返回True |
>= | 大于等于-返回x是否大于等于y | (a>=b)返回False |
<= | 小于等于-返回x是否小于等于y | (a<=b)返回True |
注意 python3中不支持<>
赋值运算符
、
运算符 | 描述 | 实例 |
= | 简单的赋值运算符 | 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 |
成员运算符
运算符 | 描述 | 实例 |
in | 如果在指定的序列中找到值返回True,否则返回False. | v1 = "xiao" in "hhxiaolu" v1为True v2 = "xiaogou" in "hhxiaolu" v2为False |
not in | 如果在指定的序列中没有找到值返回True,否则返回False. | v1 = "xiao" in "hhxiaolu" v1为False v2 = "xiaogou" in "hhxiaolu" v2为True |
逻辑运算符
运算符 | 描述 | 实例 |
and | 布尔"与"-如果x为Flase,x and y返回False,否则返回y的计算值 | |
or | 布尔"或"-如果x为True,x or y返回True,否则返回y的计算值 | |
not | 布尔"非"-如果x为True,返回False.如果x为False,返回True | data = 1 > 2 data1 = not data data1的值为True |
运算符的优先级
常用的:
算术运算符优先级 大于 比较运算符
if 2 + 10 > 11:
print("真")
else:
print("假")
比较运算符优先级 大于 逻辑运算符
if 1 > 2 and 2 < 10:
print("成立")
else:
print("不成立")
逻辑运算符 内部三个优先级 not>and>or
if not 1 and 1 > 2 or 3 == 8:
print("真")
else:
print("假")
#先计算 not 1 为假,会短路 不会执行 1>2
#再计算 False or (3==8)
#计算 False or False 为假
#所以输出假
不确定的话 可以加括号.
例子:
v = "小狗" and "xiaolu"
# 第一步 :当and和or前面接的不是true或false,而是字符串或数字时,它们会被转换为布尔值。 (True and True)
# 第二步:判断本次操作取悦于谁?由于前面的是True,所以本次逻辑判断取决于后面的值。
# 所以后面的值等于多少,最终结果就是多少 (v="xiaolu")
print(v) # 输出xiaolu
v1 = "" and "xiaolu"
# 第一步转为布尔值,""为false.
# 由于前面的值为false,所以and逻辑判断一定为false
print(v1) # 输出""
v2 = 1 or 8
# 第一步转为布尔值,1为True
# 由于前面的值为True,所以or逻辑判断一定为True
print(v2) # 输出1
v3 = 0 or 8
# 第一步转为布尔值,0为False
# 由于前面的值为False,所以or逻辑判断取决于后面的 8,
print(v3) # 输出8
or 看第一个值,如果第一个值为真,结果就是第一个值,否则结果就是第二个值。
and看第一个值, 如果第一个值为真, 结果就是第二个值,否则结果就是第一个值。
如果多个and or先计算and 再计算 or
v1 = 0 or 4 and 3 or 7 or 9 and 6
# v1 = 0 or (4 and 3) or 7 or (9 and 6)
# v1 = 0 or 3 or 7 or 6
# v1 = 3 or 7 or 6
# v1=3 or 6
# v1=3
print(v1)
v2 = 8 or 3 and 4 or 2 and 0 or 9 and 7
# v2 = 8 or (3 and 4) or (2 and 0) or (9 and 7)
# v2 = 8 or 4 or 0 or 7
# v2 =8 or 0 or 7
# v2 =8 or 7
# v2=8
print(v2)
v3 = 0 or 2 and 3 and 4 or 6 and 0 or 3
# v3 = 0 or (2 and 3) and 4 or (6 and 0) or 3
# v3 = 0 or (3) and 4 or 0 or 3
# v3 = 0 or 4 or 0 or 3
# v3 = 4 or 0 or 3
# v3=4 or 3
# v3=4
print(v3)
输出结果:
3
8
4
如果有not先计算note
v4 = not 8 or 3 and 4 or 2
# v4 = (not 8) or (3 and 4) or 2
# v4 = (not 8) or 4 or 2
# v4 = 4 or 2
# v4 = 4
print(v4)
输出:4