Python笔记
Python小白一枚,不定期对已学习的Python知识作下笔记和整合。文中如有错误的地方,还请各位CSDN大拿评论区指出,多谢指教!
@[toc]
1.注释
Python注释有单行注释和多行注释两种:
1.1 单行注释以 “#” 开头
#这句话是单行注释
#以井号开头,书写单行注释文本
print('我的第一句python代码!') #使用print输出一段文字
1.2 Python中多行注释使用三个单引号 ''' 或三个双引号 """。
'''
这里,我们可以用三个单引号进行多行注释
'''
"""
同时,也可以使用三个双引号进行多行注释
"""
2.语法格式缩进
Python中的语法格式缩进可以用来约束用户的代码书写格式化的,同时也体现了Python代码和其他语言书写上的一个区别:Python中的代码块不是使用大括号 {} 来控制循环、类、函数以及其他逻辑判断的,而是通过语句以 ':'(英文冒号) 结尾时,将缩进的语句视为一个代码块。
正确的来说,4个空格作为一个缩进(首选缩进方法)。
同时,为了代码编写上的方便,我们也可以使用一个 tab键作替代。
需要注意的是: tab 制表符只能用于与同样使用制表符缩进的代码保持一致。 Python3不允许同时使用空格和制表符进行缩进。
当我们使用pycharm等软件编写Python代码时,遇到需要撤回缩进的情景时,我们可以使用 shift + tab 进行撤回缩进。
# 判断变量a的值是否大于等于50:
a = 99
if a >= 50 : #注意这一行中以‘:’结尾,下方缩进的语句试做一个代码块
print(‘a大于等于50’)
else:
print(‘a小于50’)
3.标识符
- 标识符的第一个字符必须是英文字母或下划线 _。
- 标识符的其他的部分由字母、数字和下划线组成。
- 标识符区分大小写。
- 标识符和编码要遵循PEP 8规范,详细可见Python官网:https://www.python.org/dev/peps/pep-0008/
4.关键字
Python中的关键字不能被用作任何的标识符名称,否则会提示报错信息。
我们可以在安装Python3.X版本软件自带的IDLE工具中,输入下面两句语句即可输出所有Python关键字:
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', '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']
5.输入与输出
5.1 Python输入 -- input(),会把用户通过键盘输入的任何值都作为字符串来存储作为变量:
# 用户按下enter建后退出输入模式
input("\n\n按下 enter 键后退出。")
5.2 Python输出 -- print(),在括号内的单引号中添加字符串,就可以向屏幕输出指定文字。print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":
# 用户输入文本,并按下enter建后退出输入模式
input("\n\n按下 enter 键后退出。")
6.多行语句
通常,我们在编写代码时,习惯将完整的一句代码写在同一行上的,但是个别时候,一句代码很长的情况下,在后续的阅览过程中会很不方便,需要拖动下方滚动条才能看到隐藏的代码,此时,我们可以使用反斜杠( \ )来实现多行语句。
sum = number1 + number2 + \
number3 + \
number4
7.变量
- 变量是程序中运算的对象
- 变量需要程序员自己定义
- 定义后要给变量初始化
- 变量的值可以被改变
- 变量是占用内存空间的
- Python可以同时为多个变量赋值,如a, b = 1, 2
#计算number1 + number2的和
number1=input('请输入number1的值:')
number2=input('请输入number2的值:')
sum=int(number1)+int(number2)
print('number1 + number2 = ',sum)
- 运行结果如下:
请输入number1的值:100
请输入number2的值:200
number1 + number2 = 300
8.数据类型
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
等号 = 用来给变量赋值。
等号 = 运算符左边是一个变量名,等号 = 运算符右边是存储在变量中的值。
8.1 Number(数值类型)
8.1.1 数值类型介绍
Python中的数字类型常用: int 、float 、bool、complex。
- int 类型是唯一一种整数类型。
- float 类型是单精度浮点数类型,Python中没有double双精度浮点数类型。
- bool 布尔类型,只有 true 和 false 两种值。
- complex复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
- 内置的type()函数可以查询变量所指的对象类型。
- 可以使用内置的isinstance()函数来判断一个对象是否是一个已知的类型。
- 如果要判断两个类型是否相同推荐使用 isinstance()。
#创建变量a,赋值为100
>>> a = 100
>>> a
100
>>> type(a) #使用type()函数来判断变量的类型
<class 'int'>
'''创建变量b,赋值为1.23456'''
>>> b = 1.23456
>>> print(b)
1.23456
>>> type(b)
<class 'float'>
#使用isinstance() 函数来判断一个对象是否是一个已知的类型
>>>isinstance(b,float)
True
"""
创建变量d,赋值为False,
python中布尔类型赋值时首字母大写
"""
>>> d = False
>>> print(d)
False
>>> type(d)
<class 'bool'>
Python中,需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
- int(x) 将x转换为一个整数。
- float(x) 将x转换到一个浮点数。
- complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
- complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
#首先让用户输入num1 和 num2 两个变量的数值
num1 = input('请输入变量 num1 的值:')
num2 = input('请输入变量 num2 的值:')
sum = num1 + num2
print('先来看看没有进行强制类型转换的num1 + num2 的和:')
print('num1 + num2 = ',sum)
sum = int(num1) + int(num2)
print('如果对输入的两个字符作类型转换为int 类型,sum的值如下:')
print('num1 + num2 = ',sum)
我们来看看上面的代码的输出结果:
请输入变量 num1 的值:12
请输入变量 num2 的值:34
先来看看没有进行强制类型转换的num1 + num2 的和:
num1 + num2 = 1234
如果对输入的两个字符作类型转换为int 类型,sum的值如下:
num1 + num2 = 46
8.1.2 运算符
运算符 | 描述 |
---|---|
+ | 加法,两个对象相加 a + b |
- | 减法,两个对象相减 |
* | 乘法,两个数相乘或是返回一个被重复若干次的字符串 |
/ | 除法, x 除以 y |
% | 取模,返回除法的余数 |
** | 幂 - 返回x的y次幂 |
// | 取整除 - 向下取接近除数的整数 |
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
= | 简单的赋值运算符,c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符,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 |
8.2 String(字符串)
==Python中的字符串用单引号 ' 或双引号 " 或者三引号 ''' 括起来,同时使用反斜杠 \ 转义特殊字符。==
#使用单引号(')
str1 = 'this is string'
#使用双引号(")
str2 = "this is string"
#使用三引号(''')
str3 = '''this is string'''
字符串的切片截取语法格式如下:
- 变量[起始下标:结束下标]
- 索引值以 0 为开始值,-1 为从末尾的开始位置。
加号 + 是字符串的连接符, 星号 * 表示复制当前字符串,紧跟的数字为复制的次数。
str = '这是一串很长很长的字符串!'
print(str) # 输出字符串
print(str[0:-1]) # 输出第一个到倒数第二个的所有字符
print(str[0]) # 输出字符串第一个字符
print(str[4:8]) # 输出从第三个开始到第五个的字符
print(str[4:]) # 输出从第三个开始的后的所有字符
print(str * 3) # 输出字符串两次
print(str + "没有比我更长的字符串了") # 连接字符串
输出的结果:
这是一串很长很长的字符串!
这是一串很长很长的字符串
这
很长很长
很长很长的字符串!
这是一串很长很长的字符串!这是一串很长很长的字符串!这是一串很长很长的字符串!
这是一串很长很长的字符串!没有比我更长的字符串了
另外,Python 使用反斜杠()转义特殊字符,也可以使用 r 来让反斜杠不发生转义。
print('shopping')
print('shoppi\ng')
print(r'shoppi\ng')
上述代码输出结果如下:
shopping
shoppi
g
shoppi\ng
最后,总得列一下常用字符串操作函数:
函数名 | 语法&参数 | 描述 |
---|---|---|
len() | len(str) | 返回字符串 str 的长度 |
replace() | str.replace(old, new, max) | 把字符串中的 old 替换成 new,如果指定第三个参数max,则替换不超过 max 次 |
find() | str.find(str, beg=0, end=len(string)) | 检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1 |
index() | str.index(str, beg=0, end=len(string)) | 检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常 |
split() | str.split(str="", num=string.count(str)) | 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串 |
count() | str.count(sub, start= 0,end=len(string)) | 用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置 |
capitalize() | str.capitalize() | 将字符串的第一个字母变成大写,其他字母变小写。 |
8.3 List(列表)
List(列表)是一种有序集合,可以随时添加和删除其中的元素:
- 列表的元素可以不同,也可以被改变;
- 列表同样支持切片截取语法如下:
变量[起始下标:结束下标:步进],列表被截取后,返回的是一个包含所需元素的新列表; - 列表格式[“JRS”,“James”,“Jackson”],[]之间,元素用逗号隔开;
- 索引值从0开始,-1代表末尾;
- 使用(+)可以连接两个列表,(*)是重复操作。
list1 = ['ABC', 1314, 3.1415926, '中国', 'True']
list2 = [123, 'GoHome']
print(list1) # 输出完整列表1
print(list1[0]) # 输出列表1第一个元素
print(list1[1:4]) # 从列表1第二个开始输出到第三个元素
print(list1[3:]) # 输出列表1的从第三个元素开始的所有元素
print(list2 * 2) # 输出两次列表2
print('----------------------------')
print(list2 * 2 ** 2) # 输出 2 的 2 次幂的次数的列表2
print(list1 + list2) # 连接列表1和列表2
上述代码的输出结果如下:
['ABC', 1314, 3.1415926, '中国', 'True']
ABC
[1314, 3.1415926, '中国']
['中国', 'True']
[123, 'GoHome', 123, 'GoHome']
----------------------------
[123, 'GoHome', 123, 'GoHome', 123, 'GoHome', 123, 'GoHome']
['ABC', 1314, 3.1415926, '中国', 'True', 123, 'GoHome']
8.4 Tuple(元组)
Tuple(元组)与列表类似,不同之处在于元组的元素不能修改,元组写在小括号()里,元素之间用逗号隔开,另外:
- 元组中元素类型也可以不同;
- 列表同样支持切片;
- 索引值从0开始,-1代表末尾;
- 如果元组中的元素只有一个,那么写成(1,),不要写成(1),要在唯一的一个元素后面加上英文的逗号;
- 虽然元组的元素不可改变,但它可以包含可变的对象,比如list列表。
# 元组tuple中,可以将List列表作为元素
tuple = ('IG', 8848, 25.121212, '4008823823', [123, 'GoHome'])
tinytuple = (1109, '期', '星光大道')
print(tuple) # 输出完整元组
print(tuple[0]) # 输出元组的第一个元素
print(tuple[1:3]) # 输出从第二个元素开始到第三个元素
print(tuple[2:]) # 输出从第三个元素开始的所有元素
print(tinytuple * 2) # 输出两次元组
print(tuple + tinytuple) # 连接元组
上述代码的输出结果如下:
('IG', 8848, 25.121212, '4008823823', [123, 'GoHome'])
IG
(8848, 25.121212)
(25.121212, '4008823823', [123, 'GoHome'])
(1109, '期', '星光大道', 1109, '期', '星光大道')
('IG', 8848, 25.121212, '4008823823', [123, 'GoHome'], 1109, '期', '星光大道')
下面我们来验证下元组的元素类型是否真的可以不同,元组中的元素是否真的不可改,我们用到IDLE工具进行对应代码的编写:
可以看到,元组中可以同时存在整型和字符串型数据类型的元素,而当我试图给元组的下标为3 的元素赋值的时候,提示了报错信息:
TypeError: 'tuple' object does not support item assignment
即:tuple”对象不支持项分配
注意:如果元组中的元素包含List列表,那么代码中一样不可以直接赋值操作去修改原有的元素List,但是,却可以对List列表中的元素进行修改,如下:
元组中,不可以直接将tup[3]的值赋值为100,但是却可以将tup[3][1]中的值赋值为365。
8.5 Set(集合)
Set(集合),是一个无序不重复元素的序列
- 可以使用大括号 { } 或者set()函数创建集合
注意:创建一个空集合必须用set()而不是 { },因为
{ } 是用来创建一个空字典 - 创建格式:
{value1, value2, value3, value4,….}
或者
set(value) - 输出集合的时候,重复的元素会被自动去除
- 集合之间可以进行:-差集 &交集 |并集 ^反交集
student = {'xiaohong', 'xiaoming', 'xiaoqing', 'xiaowen', 'xiaohong', 'xiaoding'}
print(student) # 输出集合,重复的元素被自动去掉
if 'xiaozhi' in student:
print('xiaozhi 在集合中')
else:
print('xiaozhi 不在集合中')
上述代码的输出结果如下(可以看到重复的 'xiaohong' 只输出了一次,并且元素输出是无序的):
{'xiaoding', 'xiaohong', 'xiaoming', 'xiaowen', 'xiaoqing'}
xiaozhi 不在集合中
8.6 Dictionary(字典)
字典(dictionary)是无序集合对象,元素是通过key-value键值对来存取的
- 字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合
- 键(key)必须使用不可变类型、在同一个字典中,键(key)必须是唯一的
- 另外,字典类型也有一些内置的函数,例如clear()、keys()、values()等。
- 字典方便我们使用查找和搜索功能
- 注意: 创建空字典使用 { }
dict = {}
dict['one'] = "1 - NBA"
dict[2] = "2 - NCAA"
tinydict = {'name': 'NCAA', 'code': 2, 'country': 'USA'}
print(dict['one']) # 输出键为 'one' 的值
print(dict[2]) # 输出键为 2 的值
print(tinydict) # 输出完整的字典
print(tinydict.keys()) # 输出所有键
print(tinydict.values()) # 输出所有值
上述代码的输出结果如下:
1 - NBA
2 - NCAA
{'name': 'NCAA', 'code': 2, 'country': 'USA'}
dict_keys(['name', 'code', 'country'])
dict_values(['NCAA', 2, 'USA'])
笔已至此,本篇笔记也已经告一段落,十分感谢各位观看至此,如果笔记中由任何错误或者表述不清的地方也请大家在下方指出,多谢。