大学四年的Python学习笔记分享之一,内容整理的比较多与仔细
Posted yunyun云芸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大学四年的Python学习笔记分享之一,内容整理的比较多与仔细相关的知识,希望对你有一定的参考价值。
翻到以前在大学坚持记录的Python学习笔记,花了一天的时间整理出来,整理时不经回忆起大学的时光,一眨眼几年就过去了,现在还在上学的你们,一定要珍惜现在,有个充实的校园生活。希望这次的分享对于你们有学习的作用。
一、创建第一个程序
第一个程序的创建、运行解释器和一些基本的调试。
1.1运行 Python
Python 程序总是在解释器中运行。
解释器是一个“基于控制台的”应用程序,通常从命令外壳运行。
Python 3.6.1(v3.6.1:69c0db5050,2017 年 3 月 21 日,01:21:04)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] 在达尔文
输入“ help ”、“ copyright ”、“ credits ”或“ license ” 以获取更多信息。
>>>
高手程序员用这种方式使用解释器通常是没有问题的,但是对于初学者来说就不太友好了。您可能正在使用为 Python 提供不同接口的环境。这很好,但是学习如何运行 Python 终端仍然是一项有用的技能。
1.2交互模式
当您启动 Python 时,您将获得一个交互模式,您可以在其中进行实验。
如果您开始输入语句,它们将立即运行。没有编辑/编译/运行/调试周期。
>> > 打印( 'hello world' )
hello world
>> > 37 * 42
1554
>> > for i in range ( 5 ):
... 打印(我)
...
0
1
2
3
4
>> >
这种所谓的read-eval-print-loop(或 REPL)对于调试和探索非常有用。
STOP:如果你不知道如何与 Python 交互,停止你正在做的事情并弄清楚如何去做。如果您使用的是 IDE,它可能隐藏在菜单选项或其他窗口后面。
让我们仔细看看 REPL 的元素:
>>>
是开始新语句的解释器提示。...
是继续语句的解释器提示。输入一个空行以完成输入并运行您输入的内容。
该...
提示可能还是取决于您的环境可能不会显示。在本课程中,它显示为空白,以便于剪切/粘贴代码示例。
下划线_
保存最后的结果。
>> > 37 * 42
1554
>> > _ * 2
3108
>> > _ + 50
3158
>> >
这仅适用于交互模式。你永远不会_
在程序中使用。
1.3创建程序
程序放在.py
文件中。
# hello.py
打印('你好世界')
您可以使用您喜欢的文本编辑器创建这些文件。
1.4运行程序
要执行程序,请在终端中使用python
命令运行它。例如,在命令行 Unix 中:
bash % python hello.py
你好,世界
重击%
或者从 Windows 外壳:
C:\\SomeFolder>hello.py
hello world
C:\\SomeFolder>c:\\python36\\python hello.py
hello world
注意:在 Windows 上,您可能需要指定 Python 解释器的完整路径,例如c:\\python36\\python
. 但是,如果 Python 以通常的方式安装,您可能只需键入程序的名称,例如hello.py
.
1.5示例程序
让我们解决以下问题:
一天早上,你出去在芝加哥西尔斯大厦旁的人行道上放一张美元钞票。此后的每一天,您出去的账单数量都会翻倍。一叠钞票超过塔的高度需要多长时间?
这是一个解决方案:
#sears.py
bill_thickness = 0.11 * 0.001 # 米(0.11 毫米)
sears_height = 442 # 高度(米)
num_bills = 1
天 = 1
而 num_bills * bill_thickness < sears_height :
打印( day , num_bills , num_bills * bill_thickness )
day = day + 1
num_bills = num_bills * 2
打印('天数',天)
打印('账单数量',num_bills)
打印('最终高度',num_bills * bill_thickness)
当你运行它时,你会得到以下输出:
bash % python3 sears.py
1 1 0.00011
2 2 0.00022
3 4 0.00044
4 8 0.00088
5 16 0.00176
6 32 0.00352
...
21 1048576 115.34336
22 2097152 230.68672
天数 23
票据数 4194304
最终高度 461.37344
使用此程序作为指南,您可以了解有关 Python 的许多重要核心概念。
1.6要注意的点
一个python程序是一系列语句:
a = 3 + 4
b = a * 2
打印( b )
每条语句都以换行符结束。语句一个接一个地执行,直到控制到达文件的末尾。
1.7注释
注释是不会被执行的文本。
a = 3 + 4
# 这是一条评论
b = a * 2
打印( b )
注释由 表示#
并延伸到行尾。
1.8变量
变量是值的名称。您可以使用从 a 到 z 的字母(小写和大写)。以及字符下划线_。数字也可以是变量名称的一部分,但作为第一个字符除外。
height = 442 # 有效
_height = 442 # 有效
height2 = 442 # 有效
2 height = 442 # 无效
1.9类型
变量不需要用值的类型声明。类型与右侧的值相关联,而不是变量的名称。
height = 442 # 一个整数
height = 442.0 # 浮点
height = 'Really high' # 一个字符串
Python 是动态类型的。变量的感知“类型”可能会随着程序执行而改变,具体取决于分配给它的当前值。
1.10区分大小写
Python 区分大小写。大写和小写字母被认为是不同的字母。这些都是不同的变量:
name = 'Jake'
Name = 'Elwood'
NAME = 'Guido'
语言语句总是小写的。
而 X < 0: #行
WHILE X < 0: #ERROR
1.11循环
该while
语句执行一个循环。
而 num_bills * bill_thickness < sears_height :
打印( day , num_bills , num_bills * bill_thickness )
day = day + 1
num_bills = num_bills * 2
打印('天数',天)
缩进下面的发言while
后,只要会执行的表达式while
是true
。
1.12缩进
缩进用于表示组合在一起的语句组。考虑前面的例子:
而 num_bills * bill_thickness < sears_height :
打印( day , num_bills , num_bills * bill_thickness )
day = day + 1
num_bills = num_bills * 2
打印('天数',天)
缩进将以下语句组合在一起作为重复的操作:
打印(天,num_bills,num_bills * bill_thickness)
day = day + 1
num_bills = num_bills * 2
因为最后的print()
语句没有缩进,所以不属于循环。空行只是为了便于阅读。不影响执行。
1.13缩进最佳实践
- 使用空格而不是制表符。
- 每层使用 4 个空格。
- 使用支持 Python 的编辑器。
Python 的唯一要求是同一块内的缩进保持一致。例如,这是一个错误:
而 num_bills * bill_thickness < sears_height :
打印( day , num_bills , num_bills * bill_thickness )
day = day + 1 # 错误
num_bills = num_bills * 2
1.14条件句
该if
语句用于执行条件:
if a > b :
print ( '计算机说不' )
else :
print ( '计算机说是' )
您可以通过使用添加额外检查来检查多个条件elif
。
if a > b :
print ( '计算机说不' )
elif a == b :
print ( '计算机说是' )
else :
print ( '计算机说可能' )
1.15印刷
该print函数使用传递的值生成一行文本。
print ( 'Hello world!' ) # 打印文本 'Hello world!'
您可以使用变量。打印的文本将是变量的值,而不是名称。
x = 100
print ( x ) # 打印文本 '100'
如果传递多个值给print
它们,则它们用空格分隔。
name = 'Jake'
print ( 'My name is' , name ) # 打印文本 'My name is Jake'
print()
总是在最后放一个换行符。
打印('你好')
打印('我的名字是','杰克')
这打印:
Hello
My name is Jake
可以抑制额外的换行符:
打印('你好',结束= '')
打印('我的名字是','杰克')
此代码现在将打印:
Hello My name is Jake
1.16用户输入
要读取一行键入的用户输入,请使用以下input()
函数:
name = input ( '输入你的名字:' )
print ( '你的名字是' , name )
input
向用户打印提示并返回他们的响应。这对于小程序、学习练习或简单的调试很有用。它并未广泛用于实际程序。
1.17通过语句
有时您需要指定一个空的代码块。关键字pass
用于它。
if a > b :
pass
else :
print ( '计算机说假' )
这也称为“无操作”语句。它什么都不做。它用作语句的占位符,以后可能会添加。
二、数字
主要讨论基础数学计算。
2.1数字类型
Python 有 4 种类型的数字:
- 布尔值
- 整数
- 浮点
- 复数(虚数)
2.2布尔值 (bool)
布尔值有两个值:True
, False
.
a = 真
b = 假
在数值上,它们被评估为值为1
, 的整数0
。
c = 4 + True # 5
d = False
if d == 0 :
print ( 'd is False' )
但是,不要写那样的代码。这会很奇怪。
整数 (int)
任意大小和基数的有符号值:
a = 37
b = - 299392993727716627377128481812241231
c = 0x7fa8 # 十六进制
d = 0o253 # 八进制
e = 0b10001111 # 二进制
常见操作:
x + y Add
x - y Subtract
x * y Multiply
x / y Divide (produces a float)
x // y Floor Divide (produces an integer)
x % y Modulo (remainder)
x ** y Power
x << n Bit shift left
x >> n Bit shift right
x & y Bit-wise AND
x | y Bit-wise OR
x ^ y Bit-wise XOR
~x Bit-wise NOT
abs(x) Absolute value
2.3浮点数(浮点数)
使用十进制或指数表示法指定浮点值:
a = 37.45
b = 4e5 # 4 x 10**5 或 400,000
c = - 1.345e-10
浮点数使用本机 CPU 表示IEEE 754
表示为双精度。这double
与编程语言 C 中的类型相同。
17 位精度
指数从 -308 到 308
请注意,在表示小数时,浮点数是不精确的。
>> > a = 2.1 + 4.2
>> > a == 6.3
错误
>> > a
6.300000000000001
>> >
这不是 Python 问题,而是 CPU 上的底层浮点硬件。
常见操作:
x + y Add
x - y Subtract
x * y Multiply
x / y Divide
x // y Floor Divide
x % y Modulo
x ** y Power
abs(x) Absolute Value
除了按位运算符之外,这些运算符与整数相同。在math
模块中可以找到其他数学函数。
导入 数学
a = 数学。sqrt ( x )
b = 数学。sin ( x )
c = 数学。cos ( x )
d = 数学。tan ( x )
e = 数学。日志( x )
2.4比较
以下比较/关系运算符适用于数字:
x < y Less than
x <= y Less than or equal
x > y Greater than
x >= y Greater than or equal
x == y Equal to
x != y Not equal to
您可以使用形成更复杂的布尔表达式
and
, or
,not
这里有一些例子:
如果 b >= a 和 b <= c:
打印('b 在 a 和 c' 之间)
如果 不是(b < a 或 b > c):
打印('b 仍然在 a 和 c' 之间)
2.5转换数字
类型名称可用于转换值:
a = int ( x ) # 将 x 转换为整数
b = float ( x ) # 将 x 转换为浮点数
试试看。
>> > a = 3.14159
>> > int ( a )
3
>> > b = '3.14159' # 它也适用于包含数字的字符串
>> > float ( b )
3.14159
>> >
三、字符串
介绍处理文本的方法。
3.1表示文字文本
字符串文字是用引号写在程序中的。
# 单引号
a = 'Yeah but no but yes but...'
# 双引号
b = "计算机说不"
# 三重引号
c = '''
看着我的眼睛,看着我的眼睛,眼睛,眼睛,眼睛,
不要在眼睛周围
,不要在眼睛周围,
看着我的眼睛,你在下。
'''
通常字符串只能跨越一行。三重引号捕获包含在多行中的所有文本,包括所有格式。
使用单 (’) 和双 (") 引号之间没有区别。但是,必须使用用于开始字符串的相同类型的引号来终止它。
3.2字符串转义码
转义码用于表示控制字符和无法直接在键盘上轻松输入的字符。以下是一些常见的转义码:
'\\n' Line feed
'\\r' Carriage return
'\\t' Tab
'\\'' Literal single quote
'\\"' Literal double quote
'\\\\' Literal backslash
3.3字符串表示
字符串中的每个字符在内部存储为所谓的 Unicode“代码点”,它是一个整数。您可以使用以下转义序列指定确切的代码点值:
a = ’ \\xf1 ’ # a = ‘ñ’
b = ’ \\u2200 ’ # b = ‘∀’
c = ’ \\U0001D122 ’ # c = ‘𝄢’
d = ‘\\N{FOR ALL}’ # d = ’ ∀’
在Unicode字符数据库是所有可用的字符代码的参考。
3.4字符串索引
字符串就像访问单个字符的数组一样工作。您使用从 0 开始的整数索引。负索引指定相对于字符串末尾的位置。
a = 'Hello world'
b = a [ 0 ] # 'H'
c = a [ 4 ] # 'o'
d = a [ - 1 ] # 'd'(字符串结束)
您还可以切片或选择指定索引范围的子字符串:
。
d = a [: 5 ] # 'Hello'
e = a [ 6 :] # 'world'
f = a [ 3 : 8 ] # 'lo wo'
g = a [ - 5 :] # 'world'
不包括结束索引处的字符。缺少索引假定字符串的开头或结尾。
3.5字符串操作
串联、长度、成员资格和复制。
# 连接 (+)
a = 'Hello' + 'World' # 'HelloWorld'
b = 'Say ' + a # 'Say HelloWorld'
# 长度 (len)
s = '你好'
len ( s ) # 5
# 成员资格测试 (`in`, `not in`)
t = 'e' in s # True
f = 'x' in s # False
g = 'hi' not in s # True
# 复制 (s * n)
rep = s * 5 # 'HelloHelloHelloHelloHello'
3.6字符串方法
字符串具有对字符串数据执行各种操作的方法。
示例:剥离任何前导/尾随空格。
s = '你好'
t = s。strip () #'你好'
示例:大小写转换。
s = '你好'
l = s。下() # '你好'
u = s . 上() #'你好'
示例:替换文本。
s = '你好世界'
t = s。replace ( 'Hello' , 'Hallo' ) # '你好世界'
更多字符串方法:
字符串有多种其他方法用于测试和操作文本数据。这是一个小方法示例:
小号。Endswith ( suffix ) # 检查字符串是否以后缀
s结尾。find ( t ) # 在 s
s中第一次出现 t。index ( t ) # t 在 s
s中第一次出现。isalpha () # 检查字符是否为字母
s . isdigit () # 检查字符是否为数字
s . islower () # 检查字符是否为小写
s . 上层() # 检查字符是否为大写
s . join ( slist ) # 使用 s 作为分隔符
s加入字符串列表。lower () # 转换为小写
s。replace ( old , new ) # 替换文本
s。rfind ( t ) # 从字符串
s 的末尾搜索 t。rindex ( t ) # 从字符串
s 的末尾搜索 t。拆分([delim ]) # 将字符串拆分为子字符串列表
s . startswith ( prefix ) # 检查字符串是否以前缀
s开头。strip () # 去除前导/尾随空格
s。upper () # 转换为大写
3.7字符串可变性
字符串是“不可变的”或只读的。一旦创建,该值就无法更改。
>> > 小号 = '的Hello World'
>> > 小号[ 1 ] = 'A'
回溯(最 近期 呼叫 最后):
文件 “<标准输入>” ,线 1,在 <模块>
类型错误:'STR' 对象 确实 不 支持 项目 分配
>> >
所有操作字符串数据的操作和方法,总是创建新的字符串。
3.8字符串可变性
使用str()
任何值转换为字符串。结果是一个字符串,其中包含与print()
语句生成的文本相同的文本。
>> > x = 42
>> > str ( x )
'42'
>> >
3.9字节串
一串 8 位字节,通常在低级 I/O 中遇到,写成如下:
data = b'Hello World \\r \\n '
通过在第一个引号前加上一点 b,您可以指定它是一个字节字符串而不是文本字符串。
大多数通常的字符串操作都有效。
len ( data ) # 13
data [ 0 : 5 ] # b'Hello'
data . 替换( b'Hello' , b'Cruel' ) # b'Cruel World\\r\\n'
索引有点不同,因为它以整数形式返回字节值。
数据[ 0 ] # 72('H' 的 ASCII 码)
与文本字符串之间的转换。
文本 = 数据。decode ( 'utf-8' ) # bytes -> text
data = text . 编码( 'utf-8' ) # 文本 -> 字节
所述'utf-8'
参数指定的字符编码。其他常见值包括'ascii'
和'latin1'
。
3.10原始字符串
原始字符串是带有未解释反斜杠的字符串文字。它们通过在初始引号前加上小写的“r”来指定。
>> > rs = r'c:\\newdata\\test' # 原始(未解释的反斜杠)
>> > rs
'c: \\\\ newdata \\\\ test'
该字符串是包含在其中的文字文本,与键入的完全相同。这在反斜杠具有特殊意义的情况下很有用。例如:文件名、正则表达式等。
3.11f-字符串
带有格式化表达式替换的字符串。
>> > 名称 = 'IBM'
>> > 股 = 100
>> > 价格 = 91.1
>> > 一个 = F” {名称:> 10秒} {股:10D } {价格:10.2f } '
>> > 一个
' IBM 100 91.10'
>> > b = f'Cost = $ {股份*价格:0.2f } '
>> > 乙
'成本 = $9110.00'
>> >
注意:这需要 Python 3.6 或更新版本。
四、列表
介绍列表,这是 Python 用于保存有序值集合的主要类型。
4.1创建列表
使用方括号定义列表文字:
名称 = [ 'Elwood' , 'Jake' , 'Curtis' ]
nums = [ 39 , 38 , 42 , 65 , 111 ]
有时列表是由其他方法创建的。例如,可以使用以下split()方法将字符串拆分为列表:
>> > 行 = 'GOOG,100,490.10'
>> > 行 = 行。拆分( ',' )
>> > 行
[ 'GOOG' , '100' , '490.10' ]
>> >
4.2列出操作
列表可以包含任何类型的项目。添加一个新项目使用append()
:
名字。append ( 'Murphy' ) # 添加到结尾
名称。insert ( 2 , 'Aretha' ) # 在中间插入
使用+
来连接列表:
s = [ 1 , 2 , 3 ]
t = [ 'a' , 'b' ]
s + t # [1, 2, 3, 'a', 'b']
列表由整数索引。从 0 开始。
姓名 = [ '埃尔伍德'、'杰克'、'柯蒂斯' ]
名称[ 0 ] # 'Elwood'
名称[ 1 ] # 'Jake'
名称[ 2 ] # 'Curtis'
负指数从最后开始计数。
名称[ - 1 ] # '柯蒂斯'
您可以更改列表中的任何项目。
名字[ 1 ] = 'Joliet Jake'
名字 # ['Elwood', 'Joliet Jake', 'Curtis']
列表的长度。
名称 = [ 'Elwood' , 'Jake' , 'Curtis' ]
len (名称) # 3
成员资格测试 ( in
, not in
)。
“埃尔伍德” 在 名称 #真
“布兰妮 不是 在 名称 #真
复制 ( s * n
)。
s = [ 1 , 2 , 3 ]
s * 3 # [1, 2, 3, 1, 2, 3, 1, 2, 3]
4.3列表迭代和搜索
使用for
遍历列表内容。
for name in names :
# use name
# eg print(name)
...
这类似于foreach
其他编程语言的声明。
要快速找到某物的位置,请使用index()
。
姓名 = [ 'Elwood' , 'Jake' , 'Curtis' ]
姓名。索引('柯蒂斯') #2
如果元素出现多次,index()
将返回第一次出现的索引。
如果未找到该元素,则会引发ValueError
异常。
4.4列表删除
您可以通过元素值或索引删除项目:
# 使用值
名称。删除('柯蒂斯')
# 使用索引
删除 名称[ 1 ]
移除一个项目不会产生一个洞。其他物品将向下移动以填充空出的空间。如果元素出现多次,remove()
则只删除第一次出现。
4.5列表排序
列表可以“就地”排序。
s =以上是关于大学四年的Python学习笔记分享之一,内容整理的比较多与仔细的主要内容,如果未能解决你的问题,请参考以下文章
python-第一块,笔记整理和学习内容复习(day1 - day2 - day3)