基于上篇博客介绍了一些很基本的Python语法,如数据类型,输入输出,运算符等等,此篇博客继续总结选择、循环等结构,和最重要的 字符串 类型介绍。
一、if-else选择
1、if-else语法
1 | if 条件: |
注意:if条件成立,执行后面带缩进的代码,而代码5则不属于if-else的语句块,与条件成立与否无关。
案例:猜拳
1 | import random |
2、三目运算符
语法:
1 | 条件成立执行的表达式 if 条件 else 条件不成立的表达式 |
案例:计算三角形面积
1 | a = float(input('a = ')) |
说明: 上面使用的通过边长计算三角形面积的公式叫做海伦公式。
二、循环
包括while和for循环。
1、while循环
语法
1 | while 条件: |
2、for循环
语法
1 | for 临时变量 in 序列: |
例如:循环输出字符串中的每个字符。
1 | str = 'hello world' |
3、while…else/for…else
语法
1 | while 条件: |
只有在循环正常结束时才会执行else里的内容,如果while里用break中止循环,则不会执行else里的语句。反之,continue可以执行else里的内容。
for…else语法类似。
案例:求两个数的最大公约数和最小公倍数
1 | x = int(input('x = ')) |
三、字符串
1、定义
有三种方法,单引、双引和三引。 在三引号里回车换行会原样显示。
注意:注释也有三引号的写法,完全一致。
2、下标
在python中,可以用下标查询字符串中的相应字符。
1 | str = 'hello world' |
3、切片
切片是指对操作的对象截取其中一部分的操作。字符串、列表和元组都支持切片操作。
语法
1 | 序列[开始位置下标:结束位置下标:步长] |
注意:
- 不包含结束位置下标对应的数据,正负整数均可。
- 步长是选取间隔,正负整数均可,默认步长为1。
1 | str = '01234567' |
4、字符串的常用操作方法
主要包括查找、修改和判断三大类。
1)查找
查找子串在字符串中的位置或者出现的次数。
find():检查某个子串是否包含在这个字符串中,如果存在返回这个子串开始的位置下标,否则则返回-1。
语法
1
字符串序列.find(子串,开始位置下标,结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找
index():和find()用法几乎一致。唯一不同:如果字串不存在,则系统报错。
count():返回对应子串出现的次数
语法
1
字符串序列.count(子串,开始位置下标,结束位置下标)
rfind(),rindex():用法一致,查找顺序从右边开始。
2)修改
replace:替换
1
字符串序列.replace(旧子串,新子串,替换次数)
原有字符串不会做出修改,函数返回修改后的结果。
split():分割,返回一个列表,丢失分割字符。
1
字符串序列.split(分割字符,num)
num表示的是分割字符出现的次数,即将来返回数据个数为num+1个。
不写参数,默认以空格为分隔符,包括\n \t。
join():合并列表里的字符串数据为一个大字符串。
1
字符或子串.join(多字符串组成的序列)
举例
1
2list = ['11','22','33','44']
print('_'.join(list)) #结果 11_22_33_44以上三个函数重点掌握。
转换
capitalize():讲字符串第一个字符转换成大写。
title():将字符串每个单词首字母转换成大写。
lower():将字符串中大写转小写。
upper():小写转大写。
删除空白
lstrip():删除字符串左侧空白字符。
rstrip():删除字符串右侧空白字符。
strip():删除字符串两侧空白字符。
3)判断
判断真假,返回布尔的真假。
startswith():检查字符串是否以指定子串开头,是则返回True。
1
字符串序列.startswith(子串,开始位置下标,结束位置下标)
endswith():检查字符串是否以指定子串结尾,是则返回True。
其他函数:
- isalpha():如果字符串至少有一个字符并且所有字符都是字母返回True。
- isdigit():如果字符串只包含数字则返回True。
- isalnum():如果字符串至少有一个字符并且所有字符串都是字母或数字。
isspace():如果字符串只包含空白。
其他
可以使用*
运算符来重复一个字符串的内容,可以使用in
和not in
来判断一个字符串是否包含另外一个字符串(成员运算)
1 | s1 = 'hello ' * 3 |
示例
1 | str1 = 'hello, world!' |
结果
1 | 字符串的长度是: 13 |
迅速去掉字符串的空格符、制表符和换行符
1 | aStr = 'hello wel\rcome \t to \t zy \n oYeah' |
补充
字符串的编码解码:用到方法:encode()
和 decode()
。编码解码主要针对中文
1 | str = '董奥250,a good man' |
总结:
- str 使用
encode()
方法转换为 bytes - bytes 通过
decode()
方法转换为 str
四、字符串的format格式化
一、简单运用
字符串类型格式化采用format()方法,基本使用格式是:
<模板字符串>.format(<逗号分隔的参数>)
调用format()方法后会返回一个新的字符串,参数从0开始编号。
1 | "{}{}{}".format("圆周率是",3.1415926,"...") |
二、格式控制信息 format()方法中 <模板字符串> 的槽除了包括参数序号,还可以包括格式控制信息。此时,槽的内部样式如下:
{<参数序号>: <格式控制标记>}
<参数序号>:指定的位置,从0开始。
<格式控制标记> **:用来控制参数显示时的格式。包括:<填充>,<对齐>,<宽度>,<.精度>,<类型>** 6 个字段,这些字段都是可选的,可以组合使用,逐一介绍如下。
<宽度>
指当前槽的设定输出字符宽度,如果该槽对应的format()参数长度比<宽度>设定值大,则使用参数实际长度。如果该值的实际位数小于指定宽度,则位数将被默认以空格字符补充。
<对齐>
指参数在<宽度>内输出时的对齐方式,分别使用<、>和^三个符号表示左对齐、右对齐和居中对齐。
<填充>
指<宽度>内除了参数外的字符采用什么方式表示,默认采用空格,可以通过<填充>更换。
1 | s = "PYTHON" |
逗号(,)
<格式控制标记>中逗号(,)用于显示数字的千位分隔符,例如:
1 | "{0:-^20,}".format(1234567890) |
<.精度>
表示两个含义,由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。
1 | "{0:.2f}".format(12345.67890) |
<类型>
表示输出整数和浮点数类型的格式规则。对于整数类型,输出格式包括6 种:
- b: 输出整数的二进制方式;
- c: 输出整数对应的 Unicode 字符;
- d: 输出整数的十进制方式;
- o: 输出整数的八进制方式;
- x: 输出整数的小写十六进制方式;
- X: 输出整数的大写十六进制方式
1 | "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425) |
对于浮点数类型,输出格式包括4 种:
- e: 输出浮点数对应的小写字母 e 的指数形式;
- E: 输出浮点数对应的大写字母 E 的指数形式;
- f: 输出浮点数的标准浮点形式;
- %: 输出浮点数的百分形式。
浮点数输出时尽量使用<.精度>表示小数部分的宽度,有助于更好控制输出格式。
1 | "{0:e},{0:E},{0:f},{0:%}".format(3.14) |