大学四年的Python学习笔记分享之一,内容整理的比较多与仔细

Posted yunyun云芸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大学四年的Python学习笔记分享之一,内容整理的比较多与仔细相关的知识,希望对你有一定的参考价值。

翻到以前在大学坚持记录的Python学习笔记,花了一天的时间整理出来,整理时不经回忆起大学的时光,一眨眼几年就过去了,现在还在上学的你们,一定要珍惜现在,有个充实的校园生活。希望这次的分享对于你们有学习的作用。

一、创建第一个程序

第一个程序的创建、运行解释器和一些基本的调试。

1.1运行 Python

Python 程序总是在解释器中运行。

解释器是一个“基于控制台的”应用程序,通常从命令外壳运行。

Python 3.6.1(v3.6.1:69c0db50502017321 日,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后,只要会执行的表达式whiletrue

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缩进最佳实践

  1. 使用空格而不是制表符。
  2. 每层使用 4 个空格。
  3. 使用支持 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 种类型的数字:

  1. 布尔值
  2. 整数
  3. 浮点
  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)

人生又有几个四年

「吐血」我把大学4年研究生3年的全部学习资源都分享在这里了

(经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路

计算机及相关专业的同学如何规划大学四年?