Python学习:一周总结
Python简介
Python是由荷兰人吉多·范罗苏姆(Guido von Rossum,后面称呼为Guido)发明的一种编程语言,是目前世界上最受欢迎和拥有最多用户群体的编程语言。
python解释器
- CPython —> 用C语言实现的Python解释器
- JPython —> 用Java实现的Python解释器
- IronPython ----> 用C#实现的Python解释器
- PyPy ----> 用Python实现的Python解释器
说明:大多数软件的版本号一般分为三段,形如A.B.C,其中A表示大版本号,当软件整体重写升级或出现不向后兼容的改变时,才会增加A;B表示功能更新,出现新功能时增加B;C表示小的改动(例如:修复了某个Bug),只要有修改就增加C。
Python优点
- 简单,结构简单,相对于其他语言来说,Python更容易上手,对新手小白更友好
- 注重开发效率而不是执行效率,能用更少的代码做更多的事情。
- 开放源代码,拥有强大的社区和生态圈。
- 易于维护,Python的成功在于它的源代码是相当容易维护的。
- 可拓展,如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
Python缺点
- 运行速度,有速度要求的话,用 C++ 改写关键部分吧。
- 构架选择太多(没有像 C# 这样的官方 .net 构架,也没有像 ruby 由于历史较短,构架开发的相对集中。Ruby on Rails 构架开发中小型web程序天下无敌)。不过这也从另一个侧面说明,python比较优秀,吸引的人才多,项目也多。
Python第一个代码
print()
:打印,输入
#
:单行注释,可以注释掉从#开始后面一整行的内容
''' '''
:多行注释,通常用于添加多行说明性内容
"""
hello,world
Author:悾格
"""
# hello,world
print('hello,world!')
变量
程序是指令的集合。
写程序就是用指令控制计算机做我们想让它做的事情。
计算机有两个关键点:
一是要将存储设备与*处理器分开;
二是将数据以二进制方式编码。
计算机是使用二进制计数的,不管什么数据到了计算机内存中都是以二进制形式存在的。
变量是数据的载体,就是一块用来保存数据的内存空间,变量的值可以被读取和修改,这是所有计算和控制的基础。
数据类型
- 整型(
int
):Python中可以处理任意大小的整数,而且支持二进制(如0b100
,换算成十进制是4)、八进制(如0o100
,换算成十进制是64)、十进制(100
)和十六进制(0x100
,换算成十进制是256)的表示法。 - 浮点型(
float
):浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,浮点数除了数学写法(如123.456
)之外还支持科学计数法(如1.23456e2
)。 - 字符串型(
str
):字符串是以单引号或双引号括起来的任意文本,比如'hello'
和"hello"
。 - 布尔型(
bool
):布尔值只有True
、False
两种值,要么是True
,要么是False
。
变量命名
- 变量名:字母(Unicode字符)、数字、下划线,不能使用特殊字符,数字不能开头
- 变量名是区分大小写的(大小写敏感,x和X是两个不同的变量名)
- 不能使用Python中的关键字(Python代码中有特殊含义的单词)和保留字(已经Python)
- 见名知意(看到变量的名字,就能知道它代表了什么意思)
- 变量的命名使用全使用小写,多个单词用下划线进行连接(Snake case)
type()
函数:用于查看数据类型
a = 123
b = 1.23
c = 'hello'
d = True
e = 2 < 1
f = 3 + 5j
# type()函数,查看数据类型
# int --> integer,整型
print(a, type(a))
# float,浮点型
print(b, type(b))
# str --> string,字符串型
print(c, type(c))
# bool,布尔型(True/False)
print(d, type(d))
print(e, type(e))
# complex(复数类型)
print(f, type(f))
整数的表示方式
# 十进制计数法
a = 110
# 八进制计数法`0o`
b = 0o110
# 十六进制计数法`0x`
c = 0x110
# 二进制计数法`0b`
d = 0b01010101
print(a, b, c, d)
# bin()函数:十进制转二进制
print(bin(47))
# oct()函数:十进制转八进制
print(oct(72))
# hex()函数:十进制转十六进制
print(hex(272))
运算符
赋值运算符:右边的值赋给左边(变量) —> = += -= *= /= %= **=
算术运算符: —————————————> + - * / // * * %
复合的赋值运算符:———————> += -= *= /= …
关系运算符(比较运算符) —> > < >= <= == != ----->产生布尔值(True / False)
逻辑运算符:把两个布尔值处理成一个布尔值(做多个布尔值的组合)——————————> and(与) / or(或) / not(非)
格式化输出
# 使用input函数从键盘输入数据
# 使用int函数将输入的内容处理成整数(integer)
# 使用float函数将输入的内容处理成浮点数(integer)
#
a1 = float(input('a1 = '))
b2 = float(input('b2 = '))
# 第一种
# ‘%f’是浮点数的占位符,‘%d’是整数的占位符
# %.1f 浮点数保留一位小数,%.2f保留两位小数......
print('%f + %f = %f' % (a1, b2, a1 + b2))
print('%f - %f = %f' % (a1, b2, a1 - b2))
print('%f * %f = %f' % (a1, b2, a1 * b2))
print('%f / %f = %f' % (a1, b2, a1 / b2))
print('%f // %f = %f' % (a1, b2, a1 // b2))
# 第一个%是转义作用,不能只能写一个%号
print('%f %% %f = %f' % (a1, b2, a1 % b2))
print('%f ** %f = %f' % (a1, b2, a1 ** b2))
# 第二种
# f - format - 格式化字符串
# :.1f保留一位小数,:.2f保留两位小数
print(f'{a1} + {b2} = {a1 + b2:.1f}')
print(f'{a1} - {b2} = {a1 - b2:.2f}')
print(f'{a1} * {b2} = {a1 * b2:.3f}')
print(f'{a1} / {b2} = {a1 / b2}')
print(f'{a1} // {b2} = {a1 // b2}')
print(f'{a1} ** {b2} = {a1 ** b2}')
print(f'{a1} % {b2} = {a1 % b2}')
运算符优先级
运算符和表达式对于任何一门编程语言都是非常重要的。
分支结构
**顺序结构:**在初次使用python代码时,我们写的python代码都是一条一条语句按顺序执行,这种代码结构统称为顺序结构。
**分支结构:**代码中有一条或多条执行路径,但是只有其中一条会被执行
if
语句
因此,要进行分支结构就需要使用if
语句,其中的关键字有if
、elif
、else
。这些关键字使用后需要在其后面加冒号(英文状态下的:
):
if
:条件语句,通常与else使用,也可单独使用,表示选择分支
elif
:在有if
前提下,使用elif
可以创建更多的分支
else
:否则语句,if
语句下的另一个选择分支,不可单独使用
"""
分支结构(选择结构)的例子
代码中有多条执行路径,但是只有其中一条会被执行
admin / Admin123!!
Author:悾格
"""
username = input('用户名:')
password = input('密码:')
if username == 'admin' and password == 'Admin123!!':
print('登录成功!')
print('欢迎使用XXX系统!')
print('客服热线:400-800-8800')
else:
print('登录失败!')
print('用户名或密码错误!')
print('程序结束,再见!')
**提示:**if和else 的最后面有一个:,它是用英文输入法输入的冒号;程序中输入的’、"、=、(、)等特殊字符,都是在英文输入法状态下输入的。有很多初学者经常不注意这一点,结果运行代码的时候就会遇到很多莫名其妙的错误提示。强烈建议大家在写代码的时候都打开英文输入法(注意是英文输入法而不是中文输入法的英文输入模式),这样可以避免很多不必要的麻烦。
分段函数求值
分支结构可以嵌套使用,但一定要注意嵌套的深度,嵌套深度太深直接影响代码的可读性
代码块:保持相同的缩进的代码就属于同一个代码块
"""
分段函数求值
3x - 5, x > 1
f(x) = x + 2, -1 <= x <= 1
5x + 3, x < -1
Author:悾格
"""
x = float(input('x = '))
if x > 1:
y = 3 * x - 5
elif x >= -1:
y = x + 2
else:
y = 5 * x + 3
print(f'f(x) = {y}')
循环结构
在写程序时,一定会遇到需要重复运行的代码,例如,我们在需要重复打印一串字符hello,world!
时,就需要重复输入代码,会增加代码的容量,所以在这里我们就可以使用重复结构,在结构中嵌套该语句,就可以得到我们需要的打印数量。
for in
循环
明确循环执行的次数,使用for in
循环.
while
循环
不明确循环执行的次数,就可以使用while
循环.
while
循环通过一个能够产生或转换出bool
值的表达式来控制循环,表达式的值为True
则继续循环;表达式的值为False
则结束循环。
分支结构和循环结构非常重要,是构造程序逻辑的基础,一定要通过大量的练习来达到融会贯通。
容器型数据类型(用一个变量可以保存多个数据)
- 列表(list) ----> 1.元素过长时,可以进行换行缩进,不影响列表中的元素
"""
example02 - 容器型数据类型(用一个变量可以保存多个数据)
Author:悾格
"""
# 创建列表的自变量语法
num = [10, 100, 1000]
rules = ['加油', '开心', '快乐', '高兴', '激动']
# 追加元素(把元素加到列表的末尾)
num.append(100)
# 插入元素(在指定位置插入元素)
num.insert(0, 1)
print(num)
# 删除元素(默认删除最后一个元素)
rules.pop()
rules.pop()
print(rules)
# 列表的遍历(把每个元素依次取出)
"""
example03 - 列表的遍历(把每个元素依次取出来)
Author:悾格
"""
# 正向索引:列表从头部开始算起,以0为下标,依次增加;
# 反向索引:从未部开始,以-1为下标,依次减小
num = [35, 98, 12, 27, 66]
# print(num[0], num[-2])
for i in range(len(num)):
print(num[i])
num[i] += 1
print(num[i])
print(num)
# 对列表进行读操作的for循环,无序号
for x in num:
print(x)
# 有序号
# 先通过enumerate函数对列表进行预处理
# 循环遍历的时候既可以获取到索引(下标)又可以获取到元素
for i, x in enumerate(num):
print(i, x)
# 对列表进行读写操作的for循环,有序号
for i in range(len(num)):
print(num[i])
num[i] = 100
print(num)