Python基础知识
1,初识Python
Python是一门功能强大且灵活的编程语言,由荷兰计算机科学家Guido van Rossum开发,目前被广泛地应用于软件开发、数据分析、人工智能、科学计算等领域。已经成为最受欢迎的程序设计语言之一。
2,Python解释器
在 Python 安装目录下可以找到 Python解释器程序,即python.exe。
第一个Python程序:
众所周知,计算机只能识别二进制数据,即0和1。
思考: 为什么我们输入
print("Hello World!")
计算可以识别并打印相关内容呢?
实际上计算机并不会识别Python代码,但是Python有解释器程序,它可以将Python代码翻译成计算机可以识别的二进制数据,并将其提交给计算机运行。 如下图:
使用命令行方式也可以一次执行多行代码:
①在E:\pythonProject下,将多行代码放入一个以 “.py” 结尾的文件中
②使用python命令运行它
补充知识 1: 控制print()语句输出后是否换行:
print("hello")
print("world")
想控制输出不换行的话,实现方式如下:
print("hello",end='') # print()语句中加入end = ''即可实现print输出不换行
print("world",end='')
补充知识2: 关于制表符
\t
在字符串中有一个特殊符号:\t
,效果等同于在键盘上按下tab键,它可以使多行字符串对齐。
print("Hello World")
print("lucky dog")
print("Hello\t World")
print("lucky\t dog")
运行结果:
3,Python基础语法
3.1,数据类型
① Python中可以通过type()
得到数据的类型。
代码示例:
print(type(666))
print(type(13.14))
data_type = type("Python学习第一天!")
print(data_type)
运行结果:
② 牢记一点,在Python中,变量无类型,变量存储的数据有类型。
- 将变量看作一个盒子,如果盒子里放足球,它就是足球盒子;如果盒子里放篮球,它就是篮球盒子。
- Python中,我们可能会谈到字符串变量,但并不是说该变量是字符串类型,而是说它存储了字符串。
③ python中常用的有如下数据类型
类型 | 描述 | 说明 |
---|---|---|
数字(Number) | 包括:整数 int、浮点数 float、布尔 bool、 复数complex | 例如:-10、13.14、True、False、4+3j(j结尾表示复数 ) |
字符串(String) | 描述文本的一种数据类型 | 如:“Python学习笔记” |
列表(List) | 有序的可变序列 | 有序记录数据,Python较常用的数据类型 |
元组(Tuple) | 有序的不可变序列 | 有序记录不可变数据 |
集合(Set) | 无序的不可重复集合 | 无序记录不重复数据 |
字典(Dictionary) | 无序的key-value集合 | 无序记录一堆key-value型数据 |
3.2,字面量
在代码中,被写在代码中的固定的值,称之为字面量。(与常量概念类似)举例如下
① 654
② 13.14
③ “学习Python”
以上例子中的三种字面量分别为整数字面量、浮点数字面量、字符串字面量。
3.3,注释
注释是对程序代码进行解释说明的文字,可用于增强代码可读性。
①单行注释(# + 空格 + 注释内容)
# 此处为单行注释
print("演示1")
②多行注释(三对双引号中间写入注释内容)
"""
此处为多行注释
作者:过期动态
笔记:Python学习笔记
"""
print("演示2") # 演示单行注释
3.4,变量
变量
是程序运行时,能储存
计算结果或能表示值的抽象概念。
简单的说,变量是在程序运行时,记录数据用的。
代码示例如下:
"""
演示Python中变量的相关操作
"""
# 定义一个变量,用来记录钱包余额
money = 50
# 通过print语句,输出变量记录的内容
print("钱包里还有:",money) # 演示单行注释
# 买了一个冰淇淋,花费十元
money = money - 10
print("买了冰淇淋之后,钱包里还剩:",money,"元");
运行结果:
3.5,数据类型转换
在特定的场景下, 数据类型之间是可以相互转换的,如字符串转数字、数字转字符串等。比如:
- 从文件中读取的数字,默认是字符串,我们需要转化为数字类型;
- 后续学习的 input() 语句,默认结果是字符串,若需要数字也需要转化;
- 等等
常见的转换语句:
语句(函数) | 说明 |
---|---|
int(x) | 将 x 转换为一个整数并返回 |
float(x) | 将x转换为一个浮点数并返回 |
str(x) | 将对象x转换为字符串并返回 |
代码示例:
# str()可将任意类型转换为字符串
float_str = str(11.345)
print(type(float_str),float_str) # 结果:<class 'str'> 11.345
# 将字符串转换为数字类型(要确保字符串的内容是数字才可以成功转换)
num1 = int("12")
print(type(num1),num1) # 结果:<class 'int'> 12
num2 = float("13.14")
print(type(num2),num2) # 结果:<class 'float'> 13.14
# 整数转为浮点数
float_num = float(11)
print(type(float_num),float_num) # 结果:<class 'float'> 11.0
# 浮点数转整数
int_num = int(11.845)
print(type(int_num),int_num) # 结果:<class 'int'> 11。
# 此处出现精度丢失现象,小数部分丢失
注意:浮点数转整数可能会丢失精度。
3.6,标识符
标识符是用户编程时所使用的一些列名字,用于给变量、类、方法命名。
Python标识符是有命名规则的:
- 标识符中只允许出现字母、数字、下划线、中文四类元素;
- 不推荐使用中文;
- 数字不可以放在开头;
- 需特别注意:
Python大小写敏感
; - 不可以使用关键字;
Python关键字如下:
标识符命名规范,尽量做到:
- 见名知意;
- 驼峰命名法,即下划线分隔多个单词。eg:student_name = “小明”;
- 因为字母全部小写,eg:name、age;
3.7,运算符
3.7.1,算术运算符
进行数学运算是使用算术运算符。
Python中的算术运算符如下:
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 10 + 10 结果为20 |
- | 减 | 20 - 10 结果为10 |
* | 乘 | 3*3 结果为9 |
/ | 除 | 4/2 结果为浮点型2.0 |
// | 取整除 | 11 // 2 结果为整数5 |
% | 取余 | 9 % 2 结果为1 |
** | 指数 | a** b 为 a的b次方,例如:3 ** 2 结果为9 |
3.7.2,赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符 | 把 = 右边的结果赋值给左边的变量,如num = 1 + 2 * 3,结果num 值为7 |
3.8,字符串操作
3.8.1,字符串的定义
Python中字符串有三种定义方式。
- 单引号定义法;
- 双引号定义法;
- 三引号定义法;
代码示例:
"""
演示字符串的三种定义方式
"""
# 单引号定义法
name1 = '时间序列预测1'
print(type(name1))
# 双引号定义法
name2 = "时间序列预测2"
print(type(name2))
# 三引号定义法,语法和多行注释相同,如果使用了变量接收它,它就是字符串
name3 = """时间序列预测3"""
print(type(name3))
运行结果:
注意: Python的三引号定义法和多行注释的语法一样,同样支持换行操作。若使用变量接收它,它就是字符串,不使用变量接收它,它就可以当作多行注释使用。
3.8.2,字符串的引号嵌套
思考: 如果我们要定义的字符串本身需要包含:单引号、双引号自身,代码该如何写呢?
此问题可以有三种解决方案。
- 单引号定义法,单引号内直接写双引号,即可使字符串内包含双引号;
- 双引号定义法,双引号内直接写单引号,即可使字符串内包含单引号;
- 也可使用转移字符(\)来将引号解除效用,使其变为普通字符串;
代码示例:
# 在字符串内包含双引号
name1 = '"机器学习"'
print(name1) # "机器学习"
# 在字符串内包含单引号
name2 = "'深度学习'"
print(name2) # '深度学习'
# 使用转义字符解除引号的效用
name3 = "\"人工智能\""
print(name3) # "人工智能"
name4 = '\'人工智障\''
print(name4) # '人工智障'
3.8.3,字符串的拼接
如果我们有两个字符串(文本)字面量,可以将二者拼接成一个字符串,通过 +
号即可完成。
代码示例:
print("python学习课程" + "笔记") #输出结果:python学习课程笔记
# 实际应用场景中常使用字符串和变量进行拼接
name = "过期动态"
print("我的名字是:" + name + ",欢迎大家阅读我的文章!")
运行结果:
注意: Python中字符串无法通过 +
和整数、浮点数等数值类型进行拼接
示例如下:
3.8.4,字符串的格式化
使用 +
进行字符串拼接,存在一些明显的缺点。比如:
- 变量过多,拼接起来会很麻烦;
- 字符串无法和数字以及其他类型完成拼接;
思考: 有没有其他方式,既方便又支持拼接其他类型。
答案是有的,这个方式就是字符串的格式化。
① 字符串格式化方式一:
首先我们看一段代码:
name = "CSDN"
message = "学Python,来:%s" % name
print(message)
# 可以通过以上方式可以完成变量和字符串的拼接
其中,%s
中:
- % 表示:我要占位;
- s 表示:将变量变成字符串放入占位的地方
因此:综合起来%s就是:我先占个位置,等下会有一个变量过来,我把它变成字符串放到占位的位置。
数字类型也可以进行占位。
# 通过占位形式,完成字符串和数字之间的拼接
# 多个变量占位,变量需要使用()括起来,并按照占位的顺序填入
year = 2024
avg_salary = 16781
message = "Python大数据行业,北京%s年,毕业平均薪资:%s" % (year,avg_salary)
print(message)
运行结果:
上述代码中,对数值类型使用的占位符是%s
,实际上是将数字转换为字符串,然后放入到其应该占位的地方。如果想让数字以原本的面貌拼接进去则不能再使用 %s
,而应该使用其他占位符(常用三种如下)。
格式符号 | 转化 |
---|---|
%s | 将内容转化为字符串,放入占位位置 |
%d | 将内容转化为整数,放入占位位置 |
%f | 将内容转化为浮点型,放入占位位置 |
代码举例: 完成字符串、整数、浮点数,三种不同类型的变量的占位
name = "北京大学"
set_up_year = 1898
book_num = 803.45
message = "%s 成立于%d。其馆藏图书约%f万册。" % (name,set_up_year,book_num)
print(message)
运行结果:
观察如上例子,发现其中浮点数803.45输出后变成了803.450000,原因格式化过程中我们没有对它进行精度控制。
字符串格式化中的数字精度控制
可以使用辅助符号 “m.n”
来控制数据的宽度和精度
- m,控制宽度,要求是数字。若设置的宽度小于数字自身,则不生效;
- n,控制小数点精度,要求是数字,
会进行小数的四舍五入
;
eg1: %5d
表示将整数的宽度设置为5位,若数字11被设置为%5d,就会变为[空格][空格][空格]11,用三个空格补足宽度;
eg2: %5.2f
表示将整数的宽度控制在五位,将小数点精度设置为2。11.345设置了%7.2f后,结果是:[空格][空格]11.35。(此处小数部分限制两位精度需要四舍五入)
eg3: %.2f
表示不限制宽度,只设置小数点精度为2,如11.345设置%.2f后变为11.35。
注意:小数点和小数部分都参与宽度计算。
代码示例:
num1 = 11
num2 = 11.345
print("数字11宽度限制为5,结果是:%5d" % num1)
print("数字11宽度限制为1,结果是:%1d" % num1)
print("数字11.345宽度限制为7,小数精度2,结果是:%7.2f" % num2)
print("数字11.345宽度无限制,小数精度2,结果是:%.2f" % num2)
运行结果如下:
② 字符串格式化方式二:
通过语法,f"内容{变量}{变量}"
的格式来快速格式化。 此方式有如下特点:
- 不理会数据类型
- 不做精度控制
因此,此字符串格式化方式适合对精度没有要求时使用。
代码示例:
"""
演示第二种代码示例方式:f"{变量}{变量}" 其中f是format的缩写
"""
name = "北京大学"
set_up_year = 1898
book_num = 803.45
print(f"我是{name},我成立于{set_up_year},我的图书馆藏数量是{book_num}万册")
运行结果:
3.8.5,对表达式进行格式化
表达式就是一个具有明确结果的代码语句,如 1+1 ,type(“字符串”),3*5等。使用两种字符串格式化方式对表达式进行格式化:
- f"{表达式}"
- “%s\%d\%f” % (表达式、表达式、表达式)
代码示例如下:
"""
演示对表达式进行字符串格式化
"""
print("1 * 1 的结果是:%d" % (1 * 1))
print(f"1 * 2 的结果是:{1*2}")
print("字符串在Python中的类型名是:%s" % type("字符串"))
运行结果如下:
练习题: 股价计算小程序
定义如下变量:
- name:公司名
- stock_price:当前股价
- stock_code:股票代码
- stock_price_daily_growth_factor:股票每日增长系数,浮点数类型,比如1.2
- growth_days:增长天数
计算,经过growth_days天的增长后,股价达到多少钱?
(使用字符串格式化进行输出,如果是浮点数,要求小数点精度两位数)
上图中红色框框住的都是变量,需要使用格式化方式拼接进去。
# 定义需要的变量
name = "Byte Dance"
stock_price = 19.99
stock_code = "003032"
stock_price_daily_growth_factor = 1.2 # 股票价格每日增长因子
growth_days = 7
finally_stock_price = stock_price * stock_price_daily_growth_factor ** growth_days
print(f"公司:{name},股票代码:{stock_code},当前股价:{stock_price}")
print("每日增长系数:%.1f,经过%d天的增长后,股价达到了%.2f" % (stock_price_daily_growth_factor,growth_days,finally_stock_price))
运行结果如下:
3.9,数据输入 input() 语句
input语句可以从键盘获取输入
,使用时用一个变量接收或存储 input 语句获取的键盘输入数据即可。
- 可以使用 input(提示信息),用以在使用者输入内容之前显示提示信息;
无论键盘输入什么类型的数据,通过 input() 获取到的数据默认都是字符串类型。如果需要其他类型数据可以自己进行转换;
代码示例:
"""
演示Python的input()语句,获取键盘的输入信息
"""
print("请告诉我你是谁")
name = input() # 此处两行代码可以简化为一行:name = input("请告诉我你是谁")
print("我知道了,你是:%s" % name)
# 输入数字类型
num = input("请告诉我你的银行卡密码:")
print("银行卡密码类型是:",type(num)) # 无论输入什么数据,此处运行结果都为:<class 'str'>
# 通过 input() 获取到的数据都是字符串类型。如果需要其他类型数据可以自己进行转换;
num = int(num) # 此处强制转化为int类型
print("数据类型转化之后,银行卡密码类型是:",type(num)) # 输出结果:数据类型转化之后,银行卡密码类型是: <class 'int'>
运行结果: