1. 注释
-
**概述:**注释在python中用于解释代码的功能和用途,方便开发者阅读和理解代码,本身不参与程序的运行。
-
**分类:**单行注释和多行注释
-
写法:
- 单行注释:
#
注释内容,只对 # 所在行生效,换行后注释效果消失- 可以使用在代码末尾
- PyCharm快捷键:ctrl + /
- 多行注释:
- 使用三对引号进行注释,在引号内部可以随意换行
- 可以使用单引号和双引号,作用完全相同
- 多行注释不能写在代码末尾
- 多行注释没有快捷键,如果对于多行数据内容进行ctrl + / 则对于每一行数据进行单行注释
- 单行注释:
-
注意: 所有的符号必须使用英文标点,否则报错
-
代码示例:
# print("hello world") # 注释的内容不会被执行 print("单行注释可以放置在代码末尾") # 单行注释 # SyntaxError: invalid syntax 语法错误 # print('多行注释不能放置在代码末尾') '''多行注释不能写在代码末尾'''
2. 变量
-
**概述:**变量是 Python 中用于存储数据的容器,可存放不同类型的数据(如数字、字符串等 ),程序运行时能通过变量名访问和操作对应数据,我们在使用变量时,其实使用的是变量中的数据。
-
特性:
- 容器:用来储存数据的容器
- 临时:数据存储在内存当中,程序结束后或重启计算机等情况都可以销毁变量
- 可变:在程序运行过程中,变量可以被修改
-
变量的简单用法:
- 变量的定义格式:变量名 = 变量值
- 变量的调用格式:直接使用变量名即可调用变量中的数据
- 在程序运行中还可以修改变量的值
-
代码示例:
# 变量的定义格式: 变量名 = 变量值 name = "Tom" age = 18 is_student = True # 变量的调用格式: 直接使用变量名即可调用变量中的数据 print(name) print(age) print(is_student) # 在程序运行过程中还可以修改变量的值 age = 19 print(age)
3. 变量的数据类型
-
**概述:**变量的数据类型用于明确变量存储数据的特征与可执行的操作,在python中,变量类型由赋值的数据自动推导,无需手动声明,即变量值是什么类型,变量就是什么类型,一个变量的类型会因为值的类型改变而改变。
-
分类:
- 整型(int):保存的是整数
- 浮点型(float):保存的是小数
- 布尔型(bool):只有True和False两个值,表示是或者否
- 字符串类型(str):表示多个字符的组合,数据左右两侧加引号(单引号或双引号均可,但必须成对)的都是字符串类型
- 列表(list)
- 元组(tuple)
- 字典(dict)
- 集合(set)
-
特点:
- 不同的数据类型在不同的存储区域
- 不同的数据类型使用的数据结构不同
- 不同的数据类型占用的空间大小不同
- 不同的数据类型具备的功能不同
-
提示:
- 使用type函数可以查询数据的数据类型
- 变量需要先定义再调用,如果该变量名没有被定义则会报错
- 变量名和变量类型没有关系,但是使用时尽可能的见名知意
-
代码示例:
# 整型 num = 10 print(num) # 10 print(type(num)) # <class 'int'> # 浮点型 price = 12.5 print(price) # 12.5 print(type(price)) # <class 'float'> # 布尔型 has_error = False print(has_error) # False print(type(has_error)) # <class 'bool'> # 字符串类型 #在python中 数据左右两侧加引号的都是字符串类型,可以是单引号也可以是双引号,但是必须是成对,不能一单一双 name = "euler" print(name) # euler print(type(name)) # <class 'str'> # 变量需要先定义再调用,如果该变量名没有被定义则会报错 # print(age) # NameError: name 'age' is not defined age = 19 print(age) print(type(age)) # 变量名和变量类型没有关系,但是使用时尽可能的见名知意 float1 = 'float' print(float1) # float print(type(float1)) # <class 'str'>
4. 标识符和关键字
-
概述:
- **标识符:**程序员自己定义的,有特殊功能的字符组合
- **关键字:**系统或者python定义的,有特殊功能的字符组合,程序员定义标识符不能使用关键字
-
标识符的命名规则:
- 只能由字母数字,下划线组成
- 不能以数字开头
- 不能使用关键字
- 严格区分大小写
-
代码示例:
# 只能由字母数字,下划线组成 a123___456 = 789 print(a123___456) # a123_$_456 = 789 # SyntaxError: invalid decimal literal # a123_ _456 = 789 # SyntaxError: invalid decimal literal # 不能以数字开头 # 123a = 123 # SyntaxError: invalid decimal literal # print(123a) # 不能使用关键字 # False = 123 # SyntaxError: cannot assign to False # print(False) # 严格区分大小写 # a = 10 # print(A) # NameError: name 'A' is not defined
-
标识符的命名规范:
- 大驼峰命名法:每个单词首字母大写
- Python中的类名使用大驼峰命名法,StudentManageSystem
- 小驼峰命名法:除了首字母外其余单词首字母大写,studentSystem
- 下划线分隔法:单词中间用下划线分隔开
- Python中的变量名 函数名 方法名 文件名等 使用下划线分隔法,student_name
- 标识符要做到见名知意,增强代码的可读性
- 不要使用单个字母加数字的方式命名,容易混淆
- 大驼峰命名法:每个单词首字母大写
5. 输出
-
**概述:**使用计算机向用户返回数据叫做输出。
-
**输出函数:**print()
-
**普通输出:**使用print()函数输出数据
- 可以输出任意类型的数据或表达式
- 可以通过变量名进行输出
- 可以同时输出多个值
-
**格式化输出:**输出格式化后的数据,固定格式进行输出,在特定的位置更换输出内容
- %占位符输出
- 格式:“要输出的内容 占位符1,占位符2 …” % (数据1,数据2,…)
- 占位符:使用特定的符号进行占位,在运行时使用具体的数据将其替换掉
- 常用的占位符:
- %s:用来接收字符串数据
- %d:用来接收整型数据
- %f:用来接收浮点型数据
- 使用规范:
- 可以有一个占位符,也可以有多个
- 占位符的数量和变量的数量必须保持一致,不能多,也不能少
- 占位符与变量顺序要依次对应,不能交叉赋值也不能跳跃赋值
- 占位符与变量一定要数据类型完全对应
- 在格式化字符串时,百分号后只能识别一个数据,所以如果有多个变量需要使用括号括起来
- 常用的占位符:
- str.format()方法
- 格式:“要输出的内容{},{} …”.format (数据1,数据2,…)
- f-string方法(python 3.6+ 推荐)
- 格式:f"要输出的内容{数据1},{数据2} …"
- **注意:**上述三种方式是字符串格式化的方法,是字符串本身的功能,跟输出本身没有关系,当我们需要对字符串进行格式化时都可以使用这三种方法,不是只能用于输出。
- **精度控制:**使用格式化拼接字符串的方式,可以进行精度处理
- %f:浮点型可以保留n位小数 例如%.nf 保留n位小数,保留两位小数时会进行四舍五入
- %d:可以占n为不足位用空格或者0补齐,例如%0nd,如果不足则使用0补齐,如果查出n位则原样显示
- %占位符输出
-
print()函数参数:
- sep:多个数据之间的分隔符,默认使用空格进行分隔
- end:打印结束之后的结束符,默认使用 换行符
-
代码示例:
# 普通数据输出 print(123) # 输出数值 print("I love python") # 输出字符串 print(1 + 3) # 输出计算式 print(False) # 输出布尔值 name = "euler" print(name) # 通过变量名输出 print(520, "python", name) # 可以同时输出多个值 # 输出格式化后的字符串 # 格式化字符串的格式: "要输出的字符信息 %占位符" % 变量 此时就可以将变量与字符串格式化拼接到一起 name = "Alice" print("my name is %s" % name) # 格式化和print没有任何关系,他只负责输出 age = 18 output_str = "I'm %d years old." % age print(output_str) # 多占位符的格式化方式 name = "小龙女" age = 18 gender = '女' # 多占位符格式化字符串方式:"要输入的字符串信息, %占位符1, %占位符2...." % (变量1, 变量2 ....) # 占位符一定要数据类型准确,%d 接收整型数据 %f 接收浮点型数据 %s 接收字符串类型数据 # print("故事的主角是%s,年龄%d岁,性别为%s" % name, age, gender) # TypeError: not enough arguments for format string # print("故事的主角是%s,年龄%d岁,性别为%s" % (name, age)) # TypeError: not enough arguments for format string # print("故事的主角是%d,年龄%d岁,性别为%s" % (name, age, gender)) # TypeError: %d format: a real number is required, not str print("故事的主角是%s,年龄%d岁,性别为%s" % (name, age, gender)) print("故事的主角是{},年龄{}岁,性别为{}".format(name, age, gender)) # str.format()方式 print(f"故事的主角是{name},年龄{age}岁,性别为{gender}") # f-string 方式 # 精度控制 name = "小帅" age = 18 height = 1.88 money = 9 # 这个男人叫小帅,那一年他18岁,身高1.880000米,身价9个小目标 print("这个男人叫%s,那一年他%d岁,身高%f米,身价%d个小目标" % (name, age, height, money)) # 这个男人叫小帅,那一年他18岁,身高1.88米,身价9个小目标 print("这个男人叫%s,那一年他%d岁,身高%.2f米,身价%02d个小目标" % (name, age, height, money)) money = 99999 # 这个男人叫小帅,那一年他18岁,身高1.9米,身价99999个小目标 print("这个男人叫%s,那一年他%d岁,身高%.1f米,身价%03d个小目标" % (name, age, height, money)) # print()函数详解 # print函数中有一些参数 # sep 多个数据之间的分隔符,默认使用空格进行分隔 # end 打印结束之后的结束符,默认使用 换行符 # 一次打印多个姓名,并且使用逗号进行分隔 print("黄药师", "欧阳锋", "洪七公") # 同时打印,但是间隔符默认为空格 print("黄药师", "欧阳锋", "洪七公", sep=',') # 一次打印,中间用逗号隔开 # 打印一首诗,每次打印完成后,不使用换行符,而是使用,和。分隔 print("十步杀一人", end=',') print("千里不留行", end='。') print("事了拂衣去", end=',') print("深藏功与名", end='。') # 特殊符号: \n(换行符) \t(制表位,就是为了对齐文字,可以理解为多个空格) 按tab键和其效果一致 print("南帝\n一灯大师") print("中神通\t王重阳")
6. 输入
-
**概述:**输入就是人类向计算机输入数据
-
**输入函数:**input()
-
特性:
- input是一个阻塞函数,在运行后会阻塞到input函数的调用位置,等待数据的输入。如果没有输入代码将不会向下继续执行
- input函数中可以添加提示信息,也就是在让程序员输入数据前提示要输入的内容
- 通过input函数接收的所有数据都是字符串数据类型
-
代码示例:
# input函数中可以添加提示信息,也就是在让程序员输入数据前提示要输入的内容 # input("请输入您的密码:") # 可以使用变量接受input输入进来的数据信息 password = input("请输入您的密码:") print(f"您的密码是:{password}") # 密码是:123 print(type(password)) # <class 'str'>
7. 数据类型转换
-
**概述:**不同的数据类型之间进行转换
-
转换格式:
- 将数据转换为int类型数据:int(值或变量)
- 将数据转换为float类型数据:float(值或变量)
- 将数据转换为str类型数据: str(值或变量)
-
转换函数详解:
- int()
- 可以转换float类型为int,会将小数部分全部清除
- 可以转换str类型为int,但是字符串内部必须是整型数,否则报错
- float()
- 可以转换int类型为float,但是会在整数末尾添加.0
- 可以转换str类型为float,但是必须是浮点数或者整数,如果是整数同样会在末尾添加.0
- str()
- 任何数据类型都能转换为str
- **eval():**去除字符串左右两侧的引号,内部是什么就运行什么
- 如果引号里面是一句python语句,eval之后就会直接执行这个语句
- int()
-
代码示例:
int1 = 520 float1 = 3.1415 str1 = "hello" str2 = "12345" str3 = "789.123" str4 = "abc123" str5 = "123abc" # int() print(int(float1)) # 3 # print(int(str1)) # ValueError: invalid literal for int() with base 10: 'hello' print(int(str2)) # 12345 # print(int(str3)) # ValueError: invalid literal for int() with base 10: '789.123' # print(int(str4)) # ValueError: invalid literal for int() with base 10: 'abc123' # print(int(str5)) # ValueError: invalid literal for int() with base 10: '123abc' # float() print(float(int1)) # 520.0 # print(float(str1)) # ValueError: could not convert string to float: 'hello' print(float(str2)) # 12345.0 print(float(str3)) # 789.123 # print(float(str4)) # ValueError: could not convert string to float: 'abc123' # print(float(str5)) # ValueError: could not convert string to float: '123abc' # str() print(str(int1)) print(str(float1)) # eval() 去除字符串左右两侧的引号,内部是什么就运行什么 str2 = "12345" print(eval(str2)) print(type(eval(str2))) str3 = "789.123" print(eval(str3)) print(type(eval(str3))) str6 = "False" print(eval(str6)) print(type(eval(str6))) # 将下方字符串左右两侧的引号去除,就是打印hello world 的代码,所以使用eval可以打印hello world eval("print('hello world')") # hello world # NameError: name 'age' is not defined # 将str7左右两侧的引号去除,age就是一个变量名,但是变量名没有被定义所以会报错 # 注意: 变量必须先定义再调用 str7 = "age" print(eval(str7)) print(type(eval(str7)))