Python学习路线 - Python语言基础入门 - 基础语法
- 字面量
- 什么是字面量
- 常用的值类型
- 字符串
- 注释
- 注释的作用
- 注释的分类
- 变量
- 什么是变量
- 变量的特征
- 数据类型
- type()语句
- type()语句的使用方式
- 数据类型转换
- 标识符
- 什么是标识符
- 标识符命名规则
- 标识符命名规则 - 内容限定
- 标识符命令规则 - 大小写敏感
- 标识符命名规则 - 不可使用关键字
- 变量命名规范
- 变量的命名规范
- 运算符
- 算术(数学)运算符
- 赋值运算符
- 复合赋值运算符
- 字符串运用扩展
- 字符串的三种定义方式
- 字符串的引号嵌套
- 字符串拼接
- 字符串格式化
- 格式化的精度控制
- 字符串格式化 - 数字精度控制
- 字符串格式化方式2
- 字符串格式化 - 快速写法
- 对表达式进行格式化
- 字符串格式化 - 表达式的格式化
- 数据输入
- input语句(函数)
字面量
什么是字面量
字面量:在代码中,被写下来的固定的值,称之为字面量。
常用的值类型
Python中常用的有6种值(数据)的类型
类型 | 描述 | 说明 |
---|---|---|
数字(Number) | 支持 1》整数(int) 2》浮点数(float) 3》复数(complex) 4》布尔(bool) | 整数(int),如:10、-10 浮点数(float),如:13.14、-13.14 复数(complex),如:4+3j,以j结尾表示复数 布尔(bool)表达现实生活中的逻辑,即真和假,True表示真,False表示假。 True本质上是一个数字记作1,False记作0 |
字符串(String) | 描述文本的一种数据类型 | 字符串(String)由任意数量的字符组成 |
列表(List) | 有序的可变序列 | Python中使用最频繁的数据类型,可有序记录一堆数据 |
元组(Tuple) | 有序的不可变序列 | 可有序记录一堆不可变的Python数据集合 |
集合(Set) | 无序不重复集合 | 可无序记录一堆不重复的Python数据集合 |
字典(Dictionary) | 无序Key-Value集合 | 可无序记录一堆Key-Value型的Python数据集合 |
字符串
字符串(String),又称文本,是由任意数量的字符如中文、英文、各类符号、数字等组成。所以叫做字符的串
- “好好学习”
- “自学Python”
- “!@#¥%&*”
- “股票代码是:033032”
如何在代码中表达
我们目前要学习的这些类型,如何在代码中表达呢?
类型 | 程序中的写法 | 说明 |
---|---|---|
整数 | 666,-88 | 和现实中的写法一致 |
浮点数(小数) | 13.14,-5.21 | 和现实中的写法一致 |
字符串(文本) | “好好学习” | 程序中需要加上双引号来表示字符串 |
注释
注释的作用
注释:在程序代码中对程序代码进行解释说明的文字。
1.未使用注释代码
666
13.14
"好好学习"print(666)
print(13.14)
print("好好学习")
2.使用注释的代码
"""
演示:
- 各类字面量的写法
- 通过print语句输出各类字面量
"""
# 写一个整数字面量
666
# 写一个浮点数字面量
13.14
# 写一个字符串字面量
"好好学习"# 通过print语句输出各类字面量
print(666)
print(13.14)
print("好好学习")
作用:注释不是程序,不能被执行,只是对程序代码进行解释说明,让别人可以看懂程序代码的作用,能够大大增强程序的可读性。
注释的分类
1.单行注释:以 #开头,#右边 的所有文字当作说明,而不是真正要执行的程序,起辅助说明作用
# 我是单行注释
print("Hello World")
注意:#号和注释内容一般建议以一个空格隔开
温馨提示:规范是Python官方建议的要求,不强制,不遵守也不影响程序执行,但官方和大厂的代码都会遵守规范,所以遵守规范也会让我们的代码更高级
2.多行注释:以一对三个双引号 引起来(“”“注释内容”“”)来解释说明一段代码的作用使用方法
"""我是多行注释诗名:悯农作者:李坤
"""
print("锄禾日当午")
print("汗滴禾下土")
print("谁知盘中餐")
print("粒粒皆辛苦")
变量
什么是变量
变量:在程序运行时,能存储计算结果或能表示值的抽象概念。
简单的说,变量就是在程序运行时,记录数据用的
变量的定义格式
变量名称 = 变量的值
1.每一个变量都有自己的名称,称之为:变量名,也就是变量本身
2.每一个变量都有自己存储的值(内容),称之为:变量值
3.登号是赋值,表示将登号右侧的值,赋予左侧的变量
"""演示Python中变量的相关操作
"""# 定义一个变量,用来记录钱包余额
money = 50# 通过print语句,输出变量记录的内容
print("钱包还有:", money)
变量的特征
变量的值可以改变
数据类型
在学习字面量的时候,我们了解到:数据是有类型的。
目前在入门阶段,我们主要接触如下三类数据类型:
类型 | 描述 | 说明 |
---|---|---|
string | 字符串类型 | 用引号引起来的数据都是字符串 |
int | 整型(有符号) | 数字类型,存放整数 如 -1,10,0等 |
float | 浮点型(有符号) | 数字类型,存放小数 如 -3.14,6.66 |
type()语句
那么,问题来了,如何验证数据的类型呢?
我们可以通过type()语句来得到数据的类型:
语法:
type(被查看类型的数据)
type()语句的使用方式
1.在print语句中,直接输出类型信息:
print(type("好好学习"))
print(type(666))
print(type(13.14))
str是string的缩写
2.用变量存储type()的结果(返回值):
string_type = type("好好学习")
int_type = type(666)
float_type = type(11.345)
print(string_type)
print(int_type)
print(float_type)
3.查看变量中存储的数据
查看的都是<字面量>的类型,能查看变量中存储的数据类型吗?
答案是:当然可以
name = "好好学习"
name_type = type(name)
print(name_type)
注意:
我们通过type(变量)可以输出类型,这是查看变量的类型还是数据的类型?
查看的是变量存储的数据的类型。因为变量无类型,但是它存储的数据有。
数据类型转换
目的是掌握如何在字符串、整数、浮点数之间进行相互转换。
1.为什么要转换类型
数据类型之间,在特定的场景下是可以相互转换的,如字符串转数字、数字转字符串等。
数据类型的转换将会是我们以后经常使用的功能。
如:
- 从文件中读取的数字,默认是字符串,我们要转换成数字类型
- input()语句,默认结果是字符串,若需要数字也需要转换
- 将数字转换成字符串用以携程到外部系统
2.常见的转换语句
语句(函数) | 说明 |
---|---|
int(x) | 将x转换为一个整数 |
float(x) | 将x转换为一个浮点数 |
str(x) | 将对象x转换为字符串 |
# 将数字类型转换成字符串
num_str = str(11)
print(type(num_str), num_str)float_str = str(11.345)
print(type(float_str), float_str)
# 将字符串转换成数字
num = int("11")
print(type(num), num)num2 = float("11.345")
print(type(num2), num2)
标识符
什么是标识符
在Python程序中,我们可以给很多东西起名字,比如:
- 变量的名字
- 方法的名字
- 类的名字等等
这些名字,我们把它统一称之为标识符,用来做内容的标识。
标识符命名规则
Python中,标识符命名的规则主要有3类:
- 内容限制
- 大小写敏感
- 不可使用关键字
标识符命名规则 - 内容限定
标识符命名中,只允许出现:
- 英文
- 中文
- 数字
- 下划线(_)
这四类元素。其余任何内容都不被允许。
注意:
(1) 不推荐使用中文
(2) 数字不可以开头
标识符命令规则 - 大小写敏感
以定义变量为例:
Andy = “安迪1”
andy = “安迪2”
字母a的大写和小写是完全能够区分的。
标识符命名规则 - 不可使用关键字
Python中有一系列单词称之为关键字。
关键字在Python中都有特定用途,我们不可以使用它们作为标识符,关键字信息如下:
False True None and as assert 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
# 规则1:内容限定,限定只能使用:中文、英文、数字、下划线,注意:不能以数字开头
name_ = "mry"
_name = "mry"
name_1 = "mry"# 规则2:大小写敏感
Mry = "奥斯卡"
mry = 666
print(Mry)
print(mry)# 规则3:不可使用关键字
# 错误的示例,使用了关键字:class
class = 1
变量命名规范
学完了标识符(变量、类、方法)的命名规则后,我们在来学习标识符的命名规范。
- 变量名
- 类名
- 方法名
不同的标识符,有不同的规范。
变量的命名规范
- 见名知意
- 下划线命名法
- 英文字母全小写
变量命名规范 - 见名知意
变量的命名要做到:
-
明了:尽量做到看到名字就知道是什么意思
-
简洁:尽量在确保"明了"的前提下,减少名字的长度
变量命名规范 - 下划线命名法
多个单词组合变量名,要使用下划线做分割。
变量命名规范 - 英文字母小写
命名变量中的英文字母,应全部小写:
运算符
算术(数学)运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 两个对象相加 a+b 输出结果是 30 |
- | 减 | 得到负数或是一个数减去另一个数 a-b 输出结果是 -10 |
* | 乘 | 两个数相乘或是返回一个被重复若干次的字符串 a*b 输出结果是 200 |
/ | 除 | b / a 输出结果是 2 |
// | 取整除 | 返回商的整数部分 9//2 输出结果是4, 9.0//2.0 输出结果是 4.0 |
% | 取余 | 返回除法的余数 b % a 输出结果是 0 |
** | 指数 | a**b为10的20次方,输出结果是 100000000000000000000 |
"""
演示Python中的各类运算符
"""# 算术(数字) 运算符
print("1 + 1 = ", 1 + 1)
print("2 - 1 = ", 2 - 1)
print("3 * 3 = ", 3 * 3)
print("4 / 2 = ", 4 / 2)
print("11 // 2 = ", 11 // 2)
print("9 % 2 = ", 9 % 2)
print("2 ** 2 = ", 2 ** 2)
赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符 | 把 = 号右边的结果 赋给 左边的变量,如 num = 1 + 2 * 3,结果num的值为7 |
# 赋值运算符
num = 1 + 2 * 3
print(num)
复合赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
# 符合赋值运算符
num = 1
num += 1 # num = num + 1
print("num += 1 : ", num)
num -= 1
print("num -= 1 : ", num)
num *= 4
print("num *= 4 : ", num)
num /= 2
print("num /= 2 : ", num)
num = 3
num %= 2
print("num %= 2 : ", num)num **= 2
print("num **= 2 : ", num)num = 9
num //= 2
print("num //= 2 : ", num)
字符串运用扩展
字符串的三种定义方式
- 字符串在Python中有多种定义形式
1.单引号定义法:name = ‘好好学习’
2.双引号定义法:name = “好好学习”
3.三引号定义法:name = “”“好好学习”“”
三引号定义法,和多行注释的写法一样,同样支持换行操作。
使用变量接收它,它就是字符串
不使用变量接收它,就可以作为多行注释使用。
"""
演示字符串的三种定义方式:
- 单引号定义法
- 双引号定义法
- 三引号定义法
"""# 单引号定义法,使用单引号进行包围
name = '好好学习'
print(type(name))# 双引号定义法
name = "好好学习"
print(type(name))# 三引号定义法,写法和多行注释是一样的
name = """
我要
好好
学习
"""
print(type(name))
字符串的引号嵌套
如果我想要定义的字符串本身,是包含:单引号、双引号自身呢? 如何写?
- 单引号定义法,可以内含双引号
- 双引号定义法,可以内含单引号
- 可以使用转义字符(\)来将引号解除效用,变成普通字符串
# 在字符串内 包含双引号
name = '"好好学习"'
print(name)
# 在字符串内 包含单引号
name = "'好好学习'"
print(name)
# 使用转义字符 \ 解除引号的效用
name = "\"好好学习\""
print(name)
name = '\'好好学习\''
print(name)
字符串拼接
如果我们有两个字符串(文本)字面量,可以将其拼接成一个字符串,通过 + 号即可完成,如:
print(“好好学习”+“天天向上”)
输出结果:好好学习天天向上
不过一般,单纯的2个字符串字面量进行拼接显得很呆,一般,字面量和变量或变量之间会使用拼接,如:
name = “好好学习”
print(“我的名字是:” + name + “,我可以教大家技能”)
# 字符串字面量之间的拼接
print("好好学习" + "天天向上")
# 字符串字面量和字符串变量的拼接
name = "好好学习"
address = "西直门外"
print("我是:" + name + ",我的地址是:" + address)
无法和非字符串类型进行拼接,如下图:
字符串格式化
我们可以通过如下语法,完成字符串和变量的快速拼接。
其中的 %s
- % 表示:我要占位
- s 表示:将变量变成字符串放入占位的地方
所以,综合起来的意思就是:我先占个位置,等一会有个变量过来,我把它变成字符串放到占位的位置
class_num = 57
avg_salary = 16781
message = "Python大数据学科,北京%s期,平均工资:%s" % (class_num, avg_salary)
print(message)
注意:多个变量占位变量要用括号括起来,并安装占位的顺序填入。
Python中,其实支持非常多的数据类型占位,最常用的是如下三类:
格式符号 | 转化 |
---|---|
%s | 将内容转换成字符串,放入占位位置 |
%d | 将内容转换成整数,放入占位位置 |
%f | 将内容转换成浮点型,放入占位位置 |
示例代码:
name = "小卖铺"
setup_year = 2006
stock_price = 66.66
message = "%s,成立于: %d,我今天的股价是:%f" % (name, setup_year, stock_price)
print(message)
格式化的精度控制
字符串格式化 - 数字精度控制
我们可以使用辅助符号"m.n"来控制数据的宽度和精度
- m,控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效
- .n,控制小数点精度,要求是数字,会进行小数的四舍五入
示例:
- %5d:表示将整数的宽度控制在5位,如数字11,被设置为5d,就会变成:[空格][空格][空格]11,用三个空格补足宽度。
- %5.2f:表示将宽度控制为5,将小数点精度设置为2
小数点和小数部分也算入宽度计算。如,对11.345设置了%7.2f后,结果是:[空格][空格]11.35。2个空格补足宽度,小数部分限制2位精度后,四舍五入为.35 - %.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)
字符串格式化方式2
字符串格式化 - 快速写法
目前通过%符号占位已经很方便了,还能进行精度控制。
可是追求效率和优雅的Python,是否有更加优雅的方式解决问题呢?
答案是:有
通过语法:f"内容{变量}的格式来快速格式化"
看如下代码:
"""
演示第二种字符串格式化的方式:f"{占位}"
"""
name = "小卖铺"
set_up_year = 2006
stock_price = 66.66
# f: format
print(f"我是{name},我成立于:{set_up_year}年,我今天的股价是:{stock_price}")
对表达式进行格式化
表达式:一条具有明确执行结果的代码语句
如:
1 + 1 、 5 * 2 就是表达式,因为有具体的结果,结果是一个数字
又或者,常见的变量定义:
name = “张三” age = 11 + 11
字符串格式化 - 表达式的格式化
"""
演示对表达式进行字符串格式化
"""
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天的增长后,股价达到了多少钱
使用字符串格式化进行输出,如果是浮点数,要求小数点精度2位数。
示例输出:
代码:
"""
字符串格式化练习题
"""
# 定义需要的变量
name = "小卖铺"
stock_price = 19.99
stock_code = "003032"
# 股票 价格 每日 增长 因子
stock_price_daily_growth_factor = 1.2
growth_days = 7finally_stock_price = stock_price * stock_price_daily_growth_factor ** growth_daysprint(f"公司:{name},股票代码:{stock_code},当前股价:{stock_price}")
print("每日增长系数:%.1f,经过%d天的增长后,股价达到了:%.2f " % (stock_price_daily_growth_factor,growth_days,finally_stock_price))
数据输入
input语句(函数)
我们前面学习过print语句(函数),可以完成将内容(字面量、变量等)输出到屏幕上。
在Python中,与之对应的还有一个input语句,用来获取键盘输入。
- 数据输出:print
- 数据输入:input
使用上也非常简单:
- 使用input()语句可以从键盘获取输入
- 使用一个变量接收(存储)input语句获取的键盘输入数据即可
"""
演示Python的input语句
获取键盘的输入信息
"""
print("请告诉我你是谁?")
name = input()
print("我知道了,你是:%s " % name)