变量
标识符
数字、字母、下划线
必须以字母或下划线开头,不能以数字开头
大小写敏感
不能是关键字(保留字)
Python2 的关键字:
Python3 的关键字
变量将名字和对象关联起来,赋值操作并不会实际复制值,只是为数据对象取相关名字。名字是对象的引用而不是对象本身。
小整数(-5 ~ 256)直接作为对象存储,地址固定,而其他的整数地址要临时分配
1 | a = 7 |
del()
函数用于删除变量
输入输出
输入
input()
:读入一整行作为字符串
1 | # <变量> = input(<提示性文字>) |
输入integer
1 | a = int(input()) |
输入list
1 | a = list(map(int, input.split())) |
同时为多个变量赋值
用split()
函数,用于把字符串按” “分开成一个list(每个元素都是字符串),也可以按照其他元素分开,给split()
参数即可,例如3#4#5按#分开,用split('#')
(即split()
的参数默认为’ ‘)
在同行用空格分格读取三个整数的方法如下:
1 | a, b, c = map(int, input().split()) |
另外一种trick
1 | a, b, c = eval(input()) # 适用输入类似1,2,3情况(eval为直接去除字符串两边的“”,相当于三对三赋值) |
输出
print()
:以字符形式输出变量,可以输出各种类型变量的值
1 | 3) print( |
更改end
参数可以做到不换行输出等(end
默认是\n
)
1 | print(3, end='') |
通过%
来选择要输出的变量
1 | # "<格式字符串>" %(<输出对象>, <输出对象> ...) |
格式化输出
%
整数:
1 | '%o' %20) # %o 八进制 print( |
浮点数:
1 | # %f ——保留小数点后面六位有效数字 |
字符串:
1 | # %s |
format()
函数
基本格式:str.format()
它的一般格式是:{<索引>:<填充字符><对齐方式><宽度.精度><格式>}
1 | '{0:*>10}'.format(10) #右对齐 |
位置匹配:
1 | 57.467645, ".3f")) print(format( |
多种格式化:
- ‘b’ - 二进制。将数字以2为基数进行输出。
- ‘c’ - 字符。在打印之前将整数转换成对应的Unicode字符串。
- ‘d’ - 十进制整数。将数字以10为基数进行输出。
- ‘o’ - 八进制。将数字以8为基数进行输出。
- ‘x’ - 十六进制。将数字以16为基数进行输出,9以上的位数用小写字母。
- ‘e’ - 幂符号。用科学计数法打印数字。用’e’表示幂。
- ‘g’ - 一般格式。将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印。
- ‘n’ - 数字。当值为整数时和’d’相同,值为浮点数时和’g’相同。不同的是它会根据区域设置插入数字分隔符。
- ‘%’ - 百分数。将数值乘以100然后以fixed-point(‘f’)格式打印,值后面会有一个百分号。
1 | '{0:b}'.format(3)) print( |
格式化输出的做法还挺复杂的,以后写码的时候再具体看吧 :)
数据类型
python没有char没有double,分别用str和float覆盖了
type()
可以用来获得数据类型
True是1,False是0(做算数的时候可以替换,但是type(True)
是<class 'bool'
)
一些内置的类型转换函数
bool()
int()
float()
str()
complex()
就不多说了,会自动去掉前后空格、前置0等(但数据中间不能有空格)
1 | 123) str( |
chr()
返回整数对应的Unicode字符
1 | 65) chr( |
ord()
返回Unicode字符对应的整数
进制转换:bin()
oct()
hex()
(输出是str类型),int可用作转为十进制
1 | 3) bin( |
list()
整数 int
- 二进制:0b或0B
- 八进制:0o或0O
- 十进制:0x或0X
64位机器可以表示的最大整数是9223372036854775807(但超过这个范围还是可以被表示)
浮点数 float
科学计数法:如1.23e9
表示$1.23 \times10^9$,1.2e-5
表示0.000012(e前后没有空格,e后面的数字是整数)
浮点数的表达有误差,例如
1 | 2.1-2.0 |
可以用sys.float_info
查看浮点数信息
1 | import sys |
复数
<class 'complex'>
<real> + <image> j
可以是J或者j
实部虚部的数据类型都是float
用complex()
函数创建,real
方法取实部,imag
方法取虚部
1 | 1,2) a = complex( |
方法conjugate返回复数的共轭复数
$abs(a+bj) = \sqrt{a^2+b^2}$
序列
包含字符串(string)、列表(list)、元组(tuple)等
运算
python中没有++,但是可以用+=
sum()
可以给list求和
1 | 1,11)) sum(range( |
%
模,可以用作浮点数
1 | 3.4%2 |
/
默认是浮点数除法,//
默认是整数除法(向下取整,但如果有一个为float则是取整后的float)
1 | 5/3 |
math.sqrt()
或**0.5
可以开根号(float类)
乘方可以用pow()
或者**
**
运算顺序从右往左,3**2**3
先算2**3
再算3**8
round(x)
返回浮点数x的四舍五入的值,round(x,n)
返回浮点数x的四舍五入的小数点后的n位数值
其实是四舍六入五成双。1~4舍去, 6~9进位,当5时,如果5后面还有数字则进位,如果5后面没有数字的情况下,5前面的数字偶数则进位,5前面的数字是奇数则舍去。
n=0表示精确到个位,-1表示十位,负数以此类推
$ln$:math.log()
$log_{10}$:math.log10()
$log_2$:math.log2()
两个数字之间and
,值为后面一个数字(除非有0)
math
中的常用函数
比大小可以连着来
1 | 1<3<5 # 1<3 and 3<5 |
逻辑运算符,第一个条件符合就不用算第二个(第二个里面有error不会报)
逻辑运算符的优先级:not > and > or
1 | True or False and False |
语句
通常一行一条,如一行中有多条,则用分号(;)分开,如果语句太长要跨行,可以续行符(\)跨行表示一个语句
赋值
不需要事先声明变量名及其类型,直接赋值即可创建各种类型的对象变量
在c中对变量的赋值,是直接把值给变量,而在python中,变量相当于一个标签,指向一个值。
所以在python中可以进行同步赋值交换变量的值,如下:
1 | a,b = b,a # 交换变量的值(把a的值给b,把b的值给a) |
单变量赋值
1 | 1 x = |
序列赋值
1 | 4,8 # x = 4, y = 8 x,y = |
不等长序列赋值
1 | 1,2,3] i, *j = [ |
复合赋值
*=, +=, -= …
分支
if-else,注意冒号和缩进,语句块要对齐
条件表达式:类似if-else,三元
1 | y = 10 if x > 20 else 30 # if x > 20, y = 10; else y = 30 |
循环
1 | for <variable> in <container> |
1 | range(start, stop, step) |
while-else:通常和break配合使用,else后面跟能够在循环正常结束时可以执行的操作(如果break则不执行else)
1 | while i < a: |