编程基础
编程基础
2.1 基本语法
-
注释
# 单行注释,以“#”开头,下一行结束 “““ 多行注释,三对双引号 ””” ‘‘‘ 多行注释,也可以是三对单引号 ’’’
-
标识符和关键字
在Python语言中,对程序中的各个元素进行命名,以便区分,这种用来标识变量、语言、类等元素的符号称为标识符。
标识符有字母、数字、下划线组成,并且只能由字母和下划线作为标识符的开头,但是注意:
- 命名时应注意见名知义的原则
- 系统已用的关键字不得作为标识符
- 下划线对于解释器有特殊的含义,建议避免使用下划线作为标识符的开头
- 标识符区分大小写
# 查询当前版本的关键字
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
-
语句换行
Python一般是一条语句占用一行,但是有时候一条语句太长,就需要换行,在首行的末尾加上反斜杠“\”就可以写下一行:
print("夫诸,中国古代神话传说中的神兽,是一种长着四只角的鹿。\ 夫诸的形状像白鹿而且有四个角,最开始出现于先秦时期它的情状似温柔洁净,\ 喜欢四处角戏,它一出现,其地必定是大水时期,古代人民视其为水灾的兆星。")
但是还有一点,在[]、{}、()中换行是不需要反斜杠的
print(["道可道,非常道;", "名可名,非常名。"])
-
缩进
Python语言使用缩进来表示代码块,这点不同于java和c++:
a=100 if a>99: print("a") print("True") else: print("false")
在这里需要注意的是同样的缩进表示一个代码块,如果同一个代码块缩进不同就会报错,如:
a=100 if a>99: print("a") print("True")# 缩进不一致 else: print("false")
同样还要注意使用四个空格作为缩进,而不是tab键,因为不同的编辑器中代表的长度不一样。
2.2 变量和数据类型
-
变量
变量是编程中最基本的单元,它引用存储的数据对象。
例如:age=18,使用了age变量来引用了18这个数据
注意:将age修改为20,输出的值就变成了20,如果查询age修改前后的地址,是不一样的,如果再定义一个page,将它的数据修改为20,此时可以发现page的地址和age是相同的。
-
对象
- java对象是分配在堆上的,存储数据;引用是在堆栈中开辟的内存空间,用于引用某一个对象。
- Python中的对象是内存空间+数据。对象有类型,不同类型的对象可以拥有不同类型的数据
-
引用
- 变量和对象之间的关系,是指针指向的关系 。
- 一个对象,和不同的变量可以存在着多个引用关系。
- 变量是无类型的,想关联谁就指向谁。
age=18 print(id(age)) age=20 print(id(age))
输出结果:
140714103438944
140714103439008 -
==判断两个对象所储存的数据的值是否相等
is 判断两个变量是否引用同一个对象
-
数据类型:为了充分利用内存空间,为不同的数据指定了合适的类型。
- 数字类型number
- 整型int
- 布尔类型bool
- 浮点型float
- 复数类型complex
- 整型int
- 字符串类型str
- 列表类型list
- 元组类型tuple
- 集合类型set
- 字典类型dict
- 数字类型number
-
整型数据:二进制0b(0B)、八进制0o(0O)、十六进制0x(0X)
进制转换(得到整数的字符串表示形式)
a=10
b=bin(a) #二进制转换
c=oct(a) #八进制转换
d=hex(a) #十六进制转换
print(b,c,d)
print(b[2:],c[2:],d[2:])
输出结果:
0b1010 0o12 0xa
1010 12 a
补充int()的用法:
class int(x,base=10) #x是数字或者字符串,base是进制数,默认是十进制,返回整型数据
int() #无参数时返回0
int(3.6) #3
int('12',16) #如果是带参数base的话,参数要用字符串形式,因为输入纯数字的时候int()的作用是取整
int("3.5",8) # 报错,str必须为整数
int("1010",2) # 1010是正确的二进制格式
总结:int()对纯数字的作用是取整,进行进制转换必须用字符串类型,而且字符串中的数字为整数,base为2时进行的是将前面的二进制转换为十进制,其余base则是将前面的字符串转换成对应的进制数。
注意:利用[]其中加上数字,可以从这个数字之后进行截断,显示后面的内容,叫做切片
可以算大值
Data=2**13654 ## 两个**表示多少次方
print(Data)
输出结果:
183468198253262624483936350897408452847270346304160814822591220917911943602883...(后面还有很多)
-
浮点类型:
f1=1.1234567891e10 #小数点后移十位 print(f1) d1=int(f1) #浮点型变为整型 print(d1)
输出结果:
11234567891.0
11234567891d1=1.123456789e5 print(d1) f1=int(d1) #取整数时截断后面的小数 print(f1) f2=float(f1) #变回浮点型后面的小数不会恢复 print(f2)
输出结果:
112345.6789
112345
112345.0 -
复数类型:
复数的实部和虚部都是浮点数类型。
print("===========") c1=1+2j #直接输出有括号 print(c1) print("===========") c2=complex(1,2) #构造 print(c2) print("===========") print(c1+c2) #运算 print(c1-c2) print(c1*c2) print(c1/c2) print("===========") a=complex(1,3) print(a.real) #实部 print(a.imag) #虚部 print(a.conjugate()) #共轭复数
输出结果:
=========== (1+2j) =========== (1+2j) =========== (2+4j) 0j (-3+4j) (1+0j) =========== 1.0 3.0 (1-3j)
注意:虚部1和-1不可以省略
补充:共轭复数:共轭复数,两个实部相等,虚部互为相反数的复数互为共轭复数(conjugate complex number)。当虚部不为零时,共轭复数就是实部相等,虚部相反,如果虚部为零,其共轭复数就是自身(当虚部不等于0时也叫共轭虚数)。复数z的共轭复数记作z(上加一横),有时也可表示为Z*。同时, 复数z(上加一横)称为复数z的复共轭(complex conjugate)。
-
布尔类型:
b1=True b2=False print(b1+1) print(b2+1) print(b1+b2)
输出结果:
2
1
1print(True+1) print(True-1.233+100) print(True+100-1.235+(1+2j))
输出结果:
2
99.767
(100.765+2j)-
由此可以得出:bool-->int-->float-->complex
每一个python对象都有布尔值,下面的对象的布尔值为False:
其余的布尔值都为真
-
可以判断布尔值为什么的函数:
print(bool([])) print(bool(0)) print(bool({})) print(bool(())) print(bool(0.0)) print(bool(0+0j)) print(bool("")) print(bool(''))
输出结果:
False
False
False
False
False
False
False
False判断什么类型的函数:
a={} print(type(a))
输出结果:
<class 'dict'>
数据类型上是由存储的数据类型决定的。
内置函数type():对于不同类型的数据进行检测
a="a" print(type(a))
输出结果:
<class 'str'>
内置函数isinstance():判断数据是否属于某个类型
a="a" print(isinstance(a,int))
输出结果:
False
-
数据类型的转换:
函数 说明 int(x/base) 将一个数字或base(代表进制)类型的字符串转换为整数 float(x) 将x转换为一个浮点型数据 complex(real,imag) 创建一个复数
-
2.3 运算符
算数运算符
print(10//3) #取整
print(10/3) #除法
输出结果:3
3.3333333333333335
运算符 | 说明 |
---|---|
** | 幂 |
% | 取余 |
// | 取整 |
/ | 除法 |
函数:divmod()
除法之后取余
赋值运算符
a=b=12 #为多个变量赋相同的值
a,b=1,3 #为多个变量赋不同值
因此,交换数值:
a,b=1,2
a,b=b,a
print(a,b)
# 输出结果:2 1
输入:
data=input().split() #得到键盘输入,split默认按照空格分割
# data=input().split(" ")
print(data)
data=input().split()
m=map(int,data)#两个参数,函数名称,变量,把变量转换为对应的函数
l=list(m)
print(sum(l)) #对list进行求和
data=input().split()
m=map(int,data)#两个参数,函数名称,变量,把变量转换为对应的函数
# l=list(m)
print(sum(m)) #对m可以直接求和
注意:m被list赋值给l之后m的数据就被取出了,m里面的数据只能引用一次。
输出:
a,b,c=1,2,3
print(a,b,c,sep='',end='')
print(1000)
# 输出结果:1231000
a,b,c=1,2,3
print(a,b,c,sep='')
print(1000)
# 输出结果 :
# 123
# 1000
# 默认换行
函数:sep
打印时的分隔符,end
打印时的结束符
print("%+10d"%1234)
d 整数,+右对齐,-左对齐,%赋值
f1=1.234567
print("%.4f %f" % (f1,f1))
# 输出结果:1.2346 1.234567
注意:取两个以上的值需要加小括号,取几位小数的时候会四舍五入。
逻辑运算符
运算符 | 说明 | 示例 | 意义 |
---|---|---|---|
and | 与 | a and b | 如果a的布尔值为True,则返回b,否则返回a |
or | 或 | a or b | 如果a的布尔值为True,则返回a,否则返回b |
not | 非 | not a | a为True,返回False |
-
and运算:
当a为True,b为True,返回b
当a为True,b为False,返回b
当a为False,b为True,返回a
当a为False,b为False,返回a
位运算
成员运算符
A=[1,2,3]
print(1 in A,end=" ")
print(0 not in A)
# 输出结果: True True
身份运算符
is