2.python基本语法
2.1.数据类型
数据类型分为基本数据类型和组合数据类型
2.1.1.基本数据类型
数值、字符串、布尔类型
数值
int 整型 整数
例如:2 18 66 ....
float 浮点型 带小数的数
例如:2.0 18.8 66.666 ....
complex 复数 a+bj
例如:3+4j
字符串
str 字符串 视作文本
组成: 由数字、字母、空格、其他字符等组合而成
表达: 用" " 或' '
例如:"python 123 @#$^&(())"
布尔类型
bool 布尔类型 True、False
主要用于逻辑运算
例如:y = 2 < 1 # y=False
上述类型均可定义单个数据,如果我们有一组数据,该如何表示?
2.1.2.组合数据类型
列表、元组、字典、集合
列表
list 列表 序列类型: 数据有位置顺序
表示方式: [data1,data2....]
例如:
a = [1, 2, 3, 4, 5]
a[0] # 1
元组
tuple 元组 序列类型
表示方式: (data1,data2...)
元素不支持修改——“不可变的列表”
例如:
b = (1, 2, 3, 4, 5)
b[0] # 1
字典
dict 字典 映射类型: 通过“键”-“值”的映射实现数据存储和查找
表示方式: {key1:value1 , key2:value2 , ...}
例如:
student = {201901: "小明", 201902: "小红", 201903: "小强"}
student[201901] # '小明'
集合
set 集合 一系列互不相等元素的集合,无序的
表示方式: {data1,data2...}
例如:
s = {"小明", "小红", "小强", "小明"}
s # {'小强', '小明', '小红'}
2.2.变量
在程序中,我们如何来引用这些数据?
非常通俗的处理办法:赋值给一个变量
2.2.1.变量的概念
“量” 实实在在的对象:如数据、抽象
“变” 可变性:增、删、查、改等
变量定义二要素: 变量名、赋值
例如: x = 1
2.2.2.变量的命名
哪些可以用来做变量名?
大写字母、小写字母、数字、下划线、汉字及其组合。
严格区分大小写
例如:
Python_is_第1名 = True
python_is_第1名 = False
哪些情况不被允许?
首字符不允许为数字
变量名中间不能有空格
不能与33个Pyhton保留字相同
例如:
1_fruit = "apple"
my fruit = "apple"
if = True
附python保留字
2.2.3.变量名定义技巧
变量名尽可能有实际意义,表征数据的某种特性
例如:
a = [17, 18, 19]
age_of_students = [17, 18, 19]
下划线(推荐:变量和函数名) 变量名由多个单词组成:用_连接多个单词
例如:
age_of_students = [17, 18, 19]
驼峰体(推荐:类名) 变量名由多个单词组成:单词首字母大写
例如:
AgeOfStudents
尽量避免用中文和拼音做变量名
特殊的变量:常量(不变的量,如π、e) 变量名所有字母均为大写
例如:
MAX_ITERATION = 1000
2.2.4.变量的赋值
一般赋值
通过等号自右向左进行赋值
例如:
x = 1+2
x # 3
增量赋值
例如:
x = 10
x = x+10
x #20
x += 10
打包赋值
例如:
x, y = 1, 2
print(x, y) # 1 2
x, y = y, x
print(x, y) # 2 1
2.3.控制流程
2.3.1.顺序流程
自上向下依次执行
例如:实现1到5的整数求和
# res = 1+2+3+4+5
res = 0 # 赋初值
res += 1
res += 2
res += 3
res += 4
res += 5
res # 显示结果 15
2.3.2.循环流程
遍历循环(for)
主要形式:
for 元素 in 可迭代对象:
执行语句
执行过程:
从可迭代对象中,依次取出每一个元素,并进行相应的操作
例如:实现1到5的整数求和
res = 0
for i in [1,2,3,4,5]: # 每次迭代,取出一个i
res += i # 对每次迭代取出的i 进行相应操作
res # 遍历结束后,执行后续语句 15
无限循环(while)
主要形式:
while 判断条件:
条件为真,执行语句
条件为假,while 循环结束
例如:实现1到5的整数求和
while也可以添加else,当while执行完毕后执行else的内容
while 判断条件:
条件为真,执行语句
else:
while执行完毕,然后执行
i = 1
res = 0
while i <= 5: # 若i不大于5,则循环继续
res += i
i += 1
res # 若循环条件不成立,循环停止,执行后续语句 15
2.3.3.分支流程
最简单的形式:
if 判断条件:
条件为真,执行语句
else:
条件为假,执行语句
或者也可以:
if 判断条件:
当前条件为真,执行语句
elif 判断条件:
当前条件为真,执行语句
else:
前面条件都为假,执行语句
例如:
age = 18
if age > 22:
print("可以结婚啦")
else:
print("em,着急了点,再等等。。。") # em,着急了点,再等等。。。
2.4.输入和输出
程序中,大量的数据都是从外部输入,同时,最终得到的结果也需要进行输出。
2.4.1.数据从哪里来?
1. 外部文件导入
从本地硬盘、网络端读入等
该部分内容放在《文件、异常和模块》进行讲解
2. 程序中定义
例如:
age = 18
name = "Tom"
3. 动态交互输入 input
在程序运行的过程中进行输入
例如:
x = input("请输入一个数字:") # 33
y = input("请输入一个数字:") # 66
print(x + y) # 3366
type(x) #str
eval() 将字符串作为代码执行
例如:
x = eval(input("请输入一个数字:")) # 33
y = eval(input("请输入一个数字:")) # 66
print(x + y) # 99
或者
a = "print('aaa')"
eval(a)
2.4.2.数据到哪里去
1. 存储到本地硬盘或网络端
该部分内容放在《文件、异常和模块》进行讲解
2. 打印输出 print
直接打印数据
例如:
print("我是一颗小星星")
打印变量
例如:
x = 1024
print(x)
print 默认换行
例如:
print(1)
print(2)
如果不想换行怎么办?
换行控制 end=
例如:
print(123,end=" ")
print(456)
有时候,我们需要一些复杂的输出:比如几个变量一起组合输出
例如:
PI = 3.1415926
E = 2.71828
print("PI = ", PI, "E = ", E)
3. 格式化输出方法 format
基本格式:"字符{ 0 }字符{ 1 }字符".format(v0,v1)
print("PI = {0},E = {1}".format(PI, E))
PI = 3.1415926,E = 2.71828
print("PI = {1},E = {0}".format(PI, E))
PI = 2.71828,E = 3.1415926
print("PI = {},E = {}".format(PI, E))
PI = 3.1415926,E = 2.71828
print("PI = {0},E = {0}".format(PI, E))
PI = 3.1415926,E = 3.1415926
再进一步 修饰性输出
填充输出
# ____3.1415926_____ 进行填充
#0表示第几个变量,这里就表示第一个变量PI,
#冒号“:”表示接下来要对此变量进行修饰,
#下划线“_”表示要填充的图案,
#上尖括号“^”表示数据要放的位置,“^”表示数据放中间,“<”表示数据放左边,“>”表示数据放右边
#最后的20表示输出的总宽度
print("{0:_^20}".format(PI))
_____3.1415926______
print("{0:*<30}".format(PI))
3.1415926*********************
数字千分位分隔符
#显示1,000,000
print("{0:,}".format(10000000))
10,000,000
浮点数简化输出
#留2位小数
print("{0:.2f}".format(PI))
3.14
#按百分数输出
print("{0:.1%}".format(0.818727))
81.9%
#科学计数法输出
print("{0:.2e}".format(0.818727))
8.19e-01
数的进制转换输出
#十进制整数转二进制、unicode码、十进制、八进制、十六进制输出
"二进制{0:b},Unicode码{0:c},十进制{0:d},八进制{0:o},十六进制{0:x}".format(450)
'二进制111000010,Unicode码ǂ,十进制450,八进制702,十六进制1c2'
2.5.注释与缩进
2.5.1.注释
单行注释
格式:# 注释内容
a=1 # 我是单行注释
多行注释
格式:"""注释内容,可分行"""
"""妈妈
我好像
发现了
写诗的诀窍"""
2.5.2.缩进
用缩进来表示语句间的逻辑
在 for while if def class等 :之后下一行开始进行缩进,表明后续代码与前句之间的从属关系
缩进量:4字符
for i in [1, 2, 3]:
print(i)
print("打印结束")
2.5.3.使用空格
二元运算符两边加一个空格
x = 2 # 赋值
x + = 4 # 增量
6 > 2 # 比较
使用不同优先级的运算符,考虑在最低优先级的运算符周围添加空格
x = x*2 - 1
z = x*x + y*y
c = (a+b) * (a-b)
在逗号后使用空格
x, y = 1, 2
ls = [1, 2, 3]
不要使用一个以上的空格
x = 2 # 空格一个就够了,不应过多
避免使用空格
在制定关键字参数或者默认参数值的时候,不要在=附近加上空格
def fun(n=1, m=2):
print(n, m)
最后总结,格式约定的目的:
使大量Python代码风格一致
提升代码可读性
养成良好的编码规范利人利己
上述代码格式参考自PEP8的格式建议
2.6.作业练习
题目1(数据类型)
*列表属于_____类型,元组属于_____类型,字典属于_____类型。
A序列 B映射
*集合内的元素是否可以重复?
A可以 B不可以
题目2(变量)
*判断以下变量名命名是否合法,如不合法,请说明原因:
A:boy B:4student C:class D first number
*请将1,2,3,4,5打包赋值给变量a,b,c,d,e。
*请分别用下划线命名方式和驼峰体命名方式命名一个变量。
题目3(控制语句)
*分别简述for循环、while循环和if分支语句的执行过程。
题目4(输入输出)
*用input语句分别输入两个数字,并实现两个数字的相乘。
*用format分别实现黄金分割比值0.6180339887保留前3位的浮点数输出以及保留1位小数的百分比输出。
*将下列X处代码补全,实现如图所示的格式化输出。
for i in [0,1,2,3,4,5]:
print("{X}". format("X"*(2*i+1))
题目5(程序格式)
*以下格式是否符合PEP8的格式建议,如不符合,请予以修改
A x*= 10
B y = (3-1)/8
C t = (1,2,3,4,5)
D x = 10
E def fun(x = 1, y = 2):
F if m > 3:
print(“m大于3”)
答案:
1. *AAB *B
2. *A
* a,b,c,d,e=1,2,3,4,5
print(a,b,c,d,e)
* this_is_a_var=2
print(this_is_a_var)
thisIsAVar=3
ThisIsAVar=4
print(thisIsAVar,ThisIsAVar)
2. 略
4. * num1 =eval(input(“请输入第一个数字:”))
num2 =eval(input(“请输入第二个数字:”))
print(“两个数字相乘的结果是:{}”.format(num1*num2))
* # golden_section=0.6180339887
GOLDEN =0.6180339887
print("{0:.3f}". format(GOLDEN))
print("{0:.1%}". format(GOLDEN))
* for i in [0,1,2,3,4,5]:
print("{0:-^20}". format("*" * (2*i + 1)))
5. * A x与*之间添加一个空格
B 符号之间添加空格:y = ( 3 - 1 ) / 8
C 逗号后面加空格:t = (1, 2, 3, 4, 5)
D 空格太多:x = 10
E 参数的等号两边不需要空格:def fun(x=1, y=2):
F 第二行需要缩进