1.多行语句
使用 \ 来实现多行语句:(尽量不用续行符)
1 | total = item_one + \ |
在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(),例如:
1 | total = ['item_one', 'item_two', 'item_three', |
2.print函数的格式化输出
示例:
练习1:华氏温度转换为摄氏温度。
提示:华氏温度到摄氏温度的转换公式为:$C=(F−32)÷1.8$
1 | f = float(input('请输入华氏温度: ')) |
2.1 %操作符的使用:
%o:oct,八进制
%c: 返回整数对应的Unicode字符
%d:dec,十进制;%2d :占位符2位,空格填充;%02d:占位符2位,0填充
%x:hex,十六进制
%f:保留小数点后6位有效数字。如果是%.3f则保留3位小数
%e:保留小数点后6位有效数字,按指数形式输出,如果是%.3e则保留3位小数位,使用科学记数法
%s:字符串
%10s:右对齐,占位符10位
%-10s:左对齐,占位符10位
%.2s:截取两位字符串
%10.2s:10位占位符,截取两位字符串
2.2 str.format() 格式化:
{:.2f}: 保留2位小数
{:+.2f}: 带正负号,保留2位小数
{:.0f}: 不带小数
{:0>2d}: 数字补零 (填充左边, 宽度为2),即右对齐
{:x<4d} : 数字补x (填充右边, 宽度为4) ,即左对齐
{:,} : 以逗号分隔的数字,每三位分隔
{:.2e} : 指数计数法,例1.00e+09
{:>10d} ,{:<10d} ,{:^10d} : 右,左,居中对齐,宽度为10
{:b},{:d},{:o},{:x},{:#x},{:c}: 输出二,十,八,十六进制数,整数对应的Unicode字符
‘{:b}’.format(11) ‘{:d}’.format(11) ‘{:o}’.format(11) ‘{:x}’.format(11) ‘{:#x}’.format(11) ‘{:#X}’.format(11) |
1011 11 13 b 0xb 0XB |
^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
+ 表示在正数前显示 +,负数前显示 -;
(空格)表示在正数前加空格
b、d、o、x 分别是二进制、十进制、八进制、十六进制。
1 | #此外我们可以使用大括号 {} 来转义大括号 |
注意引导符号的优先顺序!!!以上表格建议背下来!!!
3.python的主要数据类型
- number:int, bool, float, complex 其中bool包括True和False
- str:加了引号的字符都被认为是字符串
- tuple:元组和列表一样,也是一种序列,与列表不同的是,元组是不可修改的
- dict:字典是一种键值对的集合,列表是有序的对象集合,字典是无序的对象集合
- set:集合是一个无序的、不重复的数据组合,主要作用有两个,分别是去重和关系测试
- list:列表是由一系列特定元素顺序排列的元素组成的
1 | # list |
4.变量类型转换
可以使用Python中内置的函数对变量类型进行转换。
int()
:将一个数值或字符串转换成整数,可以指定进制。float()
:将一个字符串转换成浮点数。str()
:将指定的对象转换成字符串形式,可以指定编码。chr()
:将整数转换成该编码对应的字符串(一个字符)。ord()
:将字符串(一个字符)转换成对应的编码(整数)。
5.常用运算符
运算符 | 描述 | ||
---|---|---|---|
[] [:] |
下标,切片 | ||
** | 指数 | ||
~ + - |
按位取反,正负号 | ||
* / % // |
乘,除,模,整除 | ||
is is not |
身份运算符 | ||
in not in |
成员运算符 | ||
not or and |
逻辑运算符,与C的&&,!,\ | \ | 注意区别 |
优先级:not > and >or
说明: 大家可以自己感受一下这两种写法到底是哪一种更好。在之前我们提到的Python之禅中有这么一句话“Flat is better than nested.”,之所以提倡代码“扁平化”是因为嵌套结构的嵌套层次多了之后会严重的影响代码的可读性,所以能使用扁平化的结构时就不要使用嵌套。
6.循环结构
在Python中构造循环结构有两种做法,一种是for-in
循环,一种是while
循环。
6.1 for-in 循环
1 | """ |
需要说明的是上面代码中的range(1, 101)
可以用来构造一个从1到100的范围,当我们把这样一个范围放到for-in
循环中,就可以通过前面的循环变量x
依次取出从1到100的整数。当然,range
的用法非常灵活,下面给出了一个例子:
range(101)
:可以用来产生0到100范围的整数,需要注意的是取不到101。range(1, 101)
:(左闭右开)可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间。range(1, 101, 2)
:可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值。range(100, 0, -2)
:可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值。
6.2 while 循环
1 | while True: |
注意break和continue关键字,作用基本同C/C++.
7.练习:输入两个正整数,计算它们的最大公约数和最小公倍数。
1 | x = int(input('x = ')) |
8.整数与浮点数
二进制(Bin):0b或0B,例0b1010
八进制(Oct):0o或0O,例0o1010
十进制(Dec):无,默认十进制
十六进制(Hex):0x或0X,例0x1010
浮点数科学计数法:1e-6 == 1*10^-6
注意浮点数的计算不是完全精确的!!!
1 | 0.1 + 0.2 == 0.3 |
9.一些内置数值运算函数
函数 | 描述 |
---|---|
abs(x) | x的绝对值 ,计算整数、浮点数结果为非负值,也可用于复数 |
divmod(x,y) | (x//y,x%y),输出为二元组形式 |
pow(x,y)或pow(x,y,z) | x**y或(x**y)%z ,幂运算 |
round(x)或round(x,d) | 对x四舍五入,保留d位小数,无参则返回x的整数 |
max(x1,x2,…,xn) | 任意数量的最大值 |
min(x1,x2, …,xn) | 任意数量的最小值 |
1 | divmod(10,3) |
10.字符串
两种索引方式:(1)从左到右,从0开始到长度-1,;(2)从右到左,从-1开始到开头
截取方式:
牢牢记住:不管索引还是截断,都是左闭右开的!!!
1 | str = 'IlovePython' |
创建字符串:单、双、三引号
1 | s = 'asdsd' or s = "sadaf" |
len()函数:返回字符串长度或者字符数
1 | #ininstance()和type()判断类型: |
字符串的相关操作:
x + y
: 连接两个字符串x,y,不加空格,如果用逗号会自动加空格
x * n
: 复制n次字符(串)x
x in s
: x 在s中,返回True
x not in s
:与上面相反
r/R:原始字符串(raw),所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。在字符串的第一个引号前加上字母 r/R。print( r'\badc\t\n' )
1 | 'a' * 8) print( |
字符串处理函数:
函数 | 描述 |
---|---|
len(x) | 返回字符串x的长度或者是其他组合类型的元素个数 |
str(x) | 把任意类型转换为字符串形式 |
chr(x) | 返回Unicode编码对应的单字符,注意是Unicode不是ASCII |
ord(x) | 返回单个字符对应的Unicode编码 |
hex(x) | 返回整数x对应的十六进制的小写形式,返回字符串 |
oct(x) | 返回整数x对应的八进制的小写形式返回字符串 |
字符串处理方法:(str用于替换字符串变量名)
方法 | 描述 |
---|---|
str.lower() | 以小写的方式全部返回str的副本 |
str.upper() | 以大写的方式全部返回str的副本 |
str.split(sep=None) | 返回一个列表,以sep作为分隔点,sep默认为空格或\n |
str.count(sub) | 返回sub子串出现的次数 |
str.replace(old,new) | 返回字符串str的副本,所有old子串被替换为new |
str.center(width,fillchar) | 字符串居中函数,fillchar参数可选,用于填充 |
str.format() | 格式化字符串 |
str.strip(chars) | 从字符串str中去掉在其左侧和右侧chars中列出的字符 |
str.join(iter) | 将iter变量的每一个元素后面增加一个str |
str.isdigit() | 如果 str只包含数字则返回 True 否则返回 False. |
str.join(iter):注意,str是一个字符串,里面包含着你将要将可迭代变量中元素分隔的符号
1 | s = "abc" |