Python的历史
- 1989年圣诞节:Guido von Rossum开始写Python语言的编译器。
- 1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的支持,还有对列表、字典等核心数据类型,同时支持以模块为基础来构造应用程序。
- 1994年1月:Python 1.0正式发布。
- 2000年10月16日:Python 2.0发布,增加了完整的垃圾回收),提供了对Unicode的支持。与此同时,Python的整个开发过程更加透明,社区对开发进度的影响逐渐扩大,生态圈开始慢慢形成。
- 2008年12月3日:Python 3.0发布,它并不完全兼容之前的Python代码,不过因为目前还有不少公司在项目和运维中使用Python 2.x版本,所以Python 3.x的很多新特性后来也被移植到Python 2.6/2.7版本中。
Python的优缺点
Python的优点
- 简单明了,学习曲线低,比很多编程语言都容易上手。
- 开放源代码,拥有强大的社区和生态圈,尤其是在数据分析和机器学习领域。
- 解释型语言,天生具有平台可移植性,代码可以工作于不同的操作系统。
- 对两种主流的编程范式(面向对象编程和函数式编程)都提供了支持。
- 代码规范程度高,可读性强,适合有代码洁癖和强迫症的人群。
Python的缺点
- 执行效率稍低,对执行效率要求高的部分可以由其他语言(如:C、C++)编写。
- 代码无法加密,但是现在很多公司都不销售卖软件而是销售服务,这个问题会被弱化。
- 在开发时可以选择的框架太多(如Web框架就有100多个),有选择的地方就有错误。
Python文本编辑工具
VSCode
Python开发工具
Pycharm 【是我自己爱用】
编写第一个Python程序
"""
第一个Python程序 - hello, world!
一步一脚印,踏出自己的白帽之路
"""
print('hello, world!')
# print("你好, 世界!")
Python之禅 - 给你讲讲道理,听不听由你
import this
说明:输入上面的代码,在Python的交互式环境中可以看到Tim Peter撰写的“Python之禅”,里面讲述的道理不仅仅适用于Python,也适用于其他任何编程语言。
Small Voice BB:我也没怎么看懂,牙口不好别硬啃生肉,翻译后吃吃熟肉。
Python变量和类型
几种常用的数据类型
· 整型
支持二进制 - 0100 0110 1010
支持八进制 - 2152
支持十进制 - 1130
支持十六进制 - 46A
· 浮点型
支持十进制表示法 - 1.130623
支持科学记数法 - 1130623=1.130623x10^6=计算器或电脑表达10的幂是一般是用E或e,也就是1.130623E6
"""
科学记数法是一种记数的方法。
把一个数表示成a与10的n次幂相乘的形式(1≤|a|<10,a不为分数形式,n为整数),
这种记数法叫做科学记数法。
"""
· 字符串型
单引号或双引号括起来的任意文本
· 'Hello World'
` "Hello World"
· 布尔型
· True - ex. 3<5 产生布尔值 True
· False - ex. 3>5 产生布尔值 False
注意大小写
· 复数型
· 形如11+30j
不常用,知道有此类型即可
变量命名
对于每个变量我们需要给它取一个名字。
在Python中,变量命名需要遵循以下这些必须遵守硬性规则和强烈建议遵守的非硬性规则。
- 硬性规则:
- 变量名由字母(广义的Unicode字符,不包括特殊字符)、数字和下划线构成,数字不能开头。
- 大小写敏感(大写的
a
和小写的A
是两个不同的变量)。 - 不要跟关键字(有特殊含义的单词)和系统保留字冲突。
- PEP 8要求:
- 用小写字母拼写,多个单词用下划线连接。
- 受保护的实例属性用单个下划线开头。
- 私有的实例属性用两个下划线开头。
!!命名时做到见名知意 !!
变量使用
加减乘除
a = 9
b = 6
print(a + b) # 15
print(a - b) # 3
print(a * b) # 54
print(a / b) # 1.5
使用 type() 检查变量的类型
a = 1
b = 1.2
c = 'hello'
d = True
e = 1 + 3j
print(type(a)) # <class 'int'>
print(type(b)) # <class 'float'>
print(type(c)) # <class 'str'>
print(type(d)) # <class 'bool'>
print(type(e)) # <class 'complex'>
输入整数 实现算术运算
a = int(input('a = '))
b = int(input('b = '))
print('%d + %d = %d' % (a, b, a + b))
print('%d - %d = %d' % (a, b, a - b))
print('%d * %d = %d' % (a, b, a * b))
print('%d / %d = %f' % (a, b, a / b))
"""
a = 3
b = 6
3 + 6 = 9
3 - 6 = -3
3 * 6 = 18
3 / 6 = 0.500000
"""
%d - 整数的占位符
%f- 小数的占位符
%% - 表示百分号(因为百分号代表了占位符,所以带占位符的字符串中要表示百分号必须写成 %%)
字符串之后的 % 后面跟的变量值会替换掉占位符然后输出到终端中。
运算符
· 算术运算符 + - * / %** //
· 赋值运算符 = += -= *= /= %= **= //=
作用:将右边的值赋给左边的变量
a = 10
b = 3
a += b # 相当于:a = a + b
a *= a + 2 # 相当于:a = a * (a + 2)
print(a) # a = (a+b)*[(a+b)+2]=13*[(13)+2]=13*15=195
· 比较运算符 < > != <= >= ==
· 逻辑运算符 and、or、not
比较运算符与逻辑运算符的运用
flag0 = 1 == 1
flag1 = 3 > 2
flag2 = 2 < 1
flag3 = flag1 and flag2
flag4 = flag1 or flag2
flag5 = not (1 != 2)
print('flag0 =', flag0) # flag0 = True
print('flag1 =', flag1) # flag1 = True
print('flag2 =', flag2) # flag2 = False
print('flag3 =', flag3) # flag3 = False
print('flag4 =', flag4) # flag4 = True
print('flag5 =', flag5) # flag5 = False
比较运算符的优先级高于赋值运算符 ,所以 flag0 = 1==1 先进行 1==1 产生布尔值 True,再将这个值赋值给变量flag0。
print()函数可以输出多个值,多个值之间可以用, 分隔。
and 运算符会连接两个布尔值,如果两个布尔值都是 True ,那么运算结果就是 True;
如果左右两边的布尔值有一个不是 True,运算结果就是 False
短路处理 - 因为不管右边的布尔值是什么,只要左边的布尔值是 False,那么运算结果就是 False
所以,如果左边的布尔值是 False,那么右边的表达式会直接被跳过(短路处理)
or 运算符也会连接两个布尔值,如果两个布尔值任意一个是 True,那么运算结果就是 True
短路处理 - 只要左边的布尔值是 True,那么运算结果就是 True;
所以,如果左边的布尔值是 True,那么右边的表达式会直接被跳过(短路处理)
not 运算符后面会连接一个布尔值,它的作用是得到与该连接的布尔值相反的值;
也就是说,后面连接的布尔值是 True,那么运算结果就是 False,而后面连接的布尔值是
False,那么运算结果就是 True
· 位运算符 &按位与 ;|按位或;^按位异或;~按位取反运算符;<<左移;>>右移
· 成员运算符 in、not in
· 身份运算符 is、is not
练习
练习1:摄氏度转换为华氏度
c = float(input('请输入摄氏度:'))
f = c * 1.8 + 32
print('%.1f摄氏度 = %.1f华氏度' % (c,f))
'''''
输出结果
请输入摄氏度:37.8
37.8摄氏度 = 100.0华氏度
'''''
%.1f,是浮点数类型的占位符,会由float类型的变量值替换它【.1f
表示这是一个浮点数,小数点后保留1位有效数字】
%d - 整数占位符
%s
字符串之后的 % 后面跟的变量值会替换掉占位符然后输出到终端中。
练习2:输入圆的半径,计算圆的周长与面积
radius = float(input('请输入圆的半径:'))
perimeter = 2 * 3.1416 * radius
area = 3.1416 * radius * radius
print('周长 : %.2f' % perimeter)
print('面积 : %.2f' % area)
'''''
输出结果
请输入圆的半径:8.6
周长 : 54.04
面积 : 232.35
'''''
radius - 半径
perimeter - 周长
area - 面积
练习3:判断输入的年份是否为闰年
year = int(input('请输入年份: '))
''' 如果代码太长不便于阅读 可以使用 \ 对代码进行折行 '''
is_leapyear = year % 4 == 0 and year % 100 != 0 or \
year % 400 == 0
print(is_leapyear)
'''''
请输入年份: 2000
True
'''''
year = int(input('请输入年份:'))
if year % 4 == 0 and year % 100 != 0 \
or year % 400 == 0 :
print(year,'是闰年')
else:
print(year,'不是闰年')
'''''
请输入年份:2000
2000 年是闰年
'''''
'''''
请输入年份:2023
2023 不是闰年
'''''
题外话
好好学英语,专业一些
为了写注释可以写出专业名词 比起 zhouchang 写成 perimeter 显得更加专业
也为了能熟读英语文献提升自己,加油!