当前位置:   article > 正文

Python基础教程(第3版)读书笔记:第一章基础知识_《python第三版》:的读书笔记

《python第三版》:的读书笔记

第1章 基础知识

1.1解析器

1.2 什么是算法

1.3 数和表达式

  1. 加减乘除
  2. 可使用双斜杠执行整除运算,
  3. 求余(求模)运算符。x % y 的结果为x除以y的余数。换而言之,结果为执行整除时余下的部分,即x % y 等价于x - ((x // y) * y)。
>>> 10 // 3
3
>>> 10 % 3
1
>>> 9 % 3
0
>>> 2.75 % .5
0.25
>>> -10 % 3
2
>>> 10 % -3
-2
>>> 10 // -3
-4
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

基于除法运算的工作原理,很容易理解最终的余数是多少。对于整除运算,需要明白的一个重点是它向下取整。因此在结果为负数的情况下,取整后将离0更远。这意味着对于-10 // 3,将向下取整到-4,而不是向上取整到-3。

  1. 乘方(求幂)运算符 (**)
>>> 2 ** 3
8
>>> -3 ** 2
-9
>>> (-3) ** 2
9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. 十六进制数、八进制数和二进制数
>>> 0xAF
175
>>> 0xaf
175
>>> 010
SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers
>>> 0o10
8
>>> 0b10
2
>>> 0x10
16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

1.4 变量variable

变量是表示(或指向)特定值的名称。

x = 3
这称为赋值(assignment),我们将值3赋给了变量x。换而言之,就是将变量x与值(或对象)
3关联起来。给变量赋值后,就可在表达式中使用它。
x * 2
6
不同于其他一些语言,使用Python变量前必须给它赋值,因为Python变量没有默认值。

注意 在Python中,名称(标识符)只能由字母、数字和下划线(_)构成,且不能以数字打头。
因此Plan9是合法的变量名,而9Plan不是

语句

本章后面将介绍如何创建无需交互式解释器就能运行的程序。仅将诸如2 * 2等表达式放在程序中不会有任何作用,但在程序中包含print(2 * 2)将打印结果4

1.6 获取用户输入

编写程序时无需知道变量的值就可使用它们。当然,解释器最终必须知道变量的值,可它怎么知道我们不知道的事情呢?解释器只知道我们已告知它的内容,不是吗?未必如此。
你编写的程序可能供他人使用,无法预测用户会向程序提供什么样的值。我们来看看很有用
的函数input(稍后将更详细地介绍函数)。

>>> input("the age of me:")
the age of me:49
'49'
>>> x=input("the age of me:")
the age of me:3
>>> x*2
'33'
>>> int(x)*2
6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

input得到的是文本或字符串,int将字符串转换为整数

思考并练习:

>>> if 1==2: print("1==2")

>>> if 1==1: print('1==1')

1==1
  • 1
  • 2
  • 3
  • 4
  • 5

1.7 函数

  1. pow()乘方
>>> 3 ** 2
9
>>> pow(3,2)
9
  • 1
  • 2
  • 3
  • 4
>>> 10+pow(2,2*3)/2.0
42.0
  • 1
  • 2

有多个内置函数可用于编写数值表达式。例如,abs计算绝对值,round将浮点数圆整为与之最接近的整数

>>> abs(-10)
10
>>> 2 // 3
0
>>> round(2/3)
1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

请注意最后两个表达式的差别。整数总是向下圆整,而round圆整到最接近的整数,并在两个整数一样近时圆整到偶数。如果要将给定的数向下圆整,该如何做呢?例如,你知道某人的年龄为32.9,并想将这个值向下圆整为32,因为他还没有满33岁。Python提供了完成这种任务的函数floor,但你不能直接使用它,因为像众多很有用的函数一样,它也包含在模块中。

1.8 模块

可将模块视为扩展,通过将其导入可以扩展Python功能。要导入模块,可使用特殊命令import。前一节提及的函数floor包含在模块math中。

>>> import math
>>> math.floor(32.9)32
  • 1
  • 2

请注意其中的工作原理:我们使用import导入模块,再以module.function的方式使用模块中的函数。

模块math还包含其他几个很有用的函数。例如,ceil与floor相反,返回大于或等于给定数的最小整数。

>>> math.ceil(32.3)33
>>> math.floor(32.3)32
  • 1
  • 2

如果确定不会从不同模块导入多个同名函数,你可能不想每次调用函数时都指定模块名。在这种情况下,可使用命令import的如下变种:

>>> from math import sqrt 
>>> sqrt(9) 3.0
  • 1
  • 2

通过使用命令import的变种from module import function,可在调用函数时不指定模块前缀。

特殊值

nan 具有特殊含义,指的是“非数值”,(not a number)

1.9 保存并运行程序

  1. 选择菜单File→New File。这将新建一个编辑器窗口,其中没有交互式提示符。

  2. 输入代码

  3. 选择菜单File→Save保存程序(其实就是一个纯文本文件)。务必将文件存储在以后能够找到的地方,并指定合理的文件名,如hello.py(扩展名.py很重要)。

  4. 可以运行这个程序了,方法是选择菜单Run→Run Module。

轻松一刻

海龟绘图法

from turtle import *
forward(100)
left(120)
forward(100)
left(120)
forward(100)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
1.9.1 从命令提示符运行Python脚本

python xx.py

*1.9.2 让脚本像普通程序一样

在Windows中,扩展名.py是让脚本像普通程序一样的关键所在。请尝试双击保存的文件。如果正确地安装了Python,这将打开一个DOS窗口。

1.9.3 注释

在Python中,井号(#)比较特殊:在代码中,井号后面到行尾的所有内容都将被忽略。下面是一个示例:

# 打印圆的周长:print(2 * pi * radius)
  • 1

第一行为注释。注释让程序更容易理解:对其他人来说如此,在程序编写者回过头来阅读代码时亦如此。据说程序员应遵守的首要戒律是“汝应注释”,但是一些不那么宽容的程序员的座右铭是“如果写起来难,理解起来必然也难”。注释务必言而有物,不要重复去讲通过代码很容易获得的信息。无用而重复的注释还不如没有。

1.10 字符串

1.10.1 单引号字符串以及对引号转义

与数一样,字符串也是值:

>>> "Hello, world!" 'Hello, world!'
  • 1

在这个示例中,有一点可能让你颇感意外:Python在打印字符串时,用单引号将其括起,而我们使用的是双引号。这有什么差别吗?其实没有任何差别。

>>> 'Hello, world!' 'Hello, world!'
  • 1

这里使用的是单引号,结果却完全相同。既然如此,为何同时支持单引号和双引号呢?因为在有些情况下,这可能会有用。

>>> "Let's go!" "Let's go!" >>> '"Hello, world!" she said' '"Hello, world!" she said'
  • 1

在上述代码中,第一个字符串包含一个单引号,因此不能用单引号将整个字符串括起,否则解释器将报错(做出这样的反应是正确的)。

>>> 'Let's go!' SyntaxError: invalid syntax
  • 1

在这里,字符串为’Let’,因此Python不知道如何处理后面的s(更准确地说是当前行余下的内容)。

第二个字符串包含双引号,因此必须使用单引号将整个字符串括起,原因和前面一样。实际上,并非必须这样做(这样做只是出于方便考虑)。可使用反斜杠(\)对引号进行转义,如下所示:

>>> 'Let\'s go!' "Let's go!"
  • 1

这样Python将明白中间的引号是字符串的一部分,而不是字符串结束的标志。虽然如此,Python打印这个字符串时,还是使用了双引号将其括起。与你预期的一样,对于双引号可采用同样的处理手法。

>>> "\"Hello, world!\" she said" '"Hello, world!" she said' 
  • 1

像这样对引号进行转义很有用,且在有些情况下必须这样做。例如,在字符串同时包含单引号和双引号(如’Let’s say “Hello, world!”’)时,如果不使用反斜杠进行转义,该如何办呢?

1.10.2 拼接字符串

为处理前述不太正常的示例,来看另一种表示这个字符串的方式:

>>> "Let's say " '"Hello, world!"' 'Let\'s say "Hello, world!"'
>>> "Hello, " + "world!" 'Hello, world!' 
>>> x = "Hello, " 
>>> y = "world!" 
>>> x + y 
'Hello, world!'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
1.10.3 字符串表示 str 和 repr

Python打印所有的字符串时,都用引号将其括起。你可能通过前面的示例发现了这一点。这是因为Python打印值时,保留其在代码中的样子,而不是你希望用户看到的样子。但如果你使用print,结果将不同。

>>> "Hello, world!" 
'Hello, world!' 
>>> print("Hello, world!") 
Hello, world!
# 如果再加上表示换行符的编码\n,差别将更明显。
>>> "Hello,\nworld!" 
'Hello,\nworld!' 
>>> print("Hello,\nworld!") 
Hello, 
world!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

通过两种不同的机制将值转换成了字符串。你可通过使用函数str和repr。使用str能以合理的方式将值转换为用户能够看懂的字符串。例如,尽可能将特殊字符编码转换为相应的字符。然而,使用repr,通常会获得值的合法Python表达式表示。

>>> print(repr("Hello,\nworld!")) 
'Hello,\nworld!' 
>>> print(str("Hello,\nworld!")) 
Hello, world!
  • 1
  • 2
  • 3
  • 4
1.10.4 长字符串、原始字符串和字节

有一些独特而有用的字符串表示方式。例如,有一种独特的语法可用于表示包含换行符或反斜杠的字符串(长字符串和原始字符串)。

  1. 长字符串
    要表示很长的字符串(跨越多行的字符串),可使用三引号(而不是普通引号)。
print('''This is a very long string. It continues here. And it's not over yet. "Hello, world!" Still here.''')
  • 1

还可使用三个双引号,如"""like this"""。请注意,这让解释器能够识别表示字符串开始和结束位置的引号,因此字符串本身可包含单引号和双引号,无需使用反斜杠进行转义。

提示 常规字符串也可横跨多行。只要在行尾加上反斜杠,反斜杠和换行符将被转义,即被忽略。例如,如果编写如下代码:
print("Hello, \ world!")
它将打印Hello, world!。这种处理手法也适用于表达式和语句。

>>> 1 + 2 + \  4 + 5 12 >>> print \  ('Hello, world') Hello, world
  • 1
1.11.1 本章介绍的新函数
函 数描 述
abs(number)返回指定数的绝对值
bytes(string, encodi| [, errors]),并以指定的方式处理错误
cmath.sqrt(number)返回平方根;可用于负数
float(object)将字符串或数字转换为浮点数
help([object])提供交互式帮助
input(prompt)以字符串的方式获取用户输入
int(object)将字符串或数转换为整数
math.ceil(number)以浮点数的方式返回向上圆整的结果
math.floor(number)以浮点数的方式返回向下圆整的结果
math.sqrt(number)返回平方根;不能用于负数
pow(x, y[, z])返回x的y次方对z求模的结果
print(object, …)将提供的实参打印出来,并用空格 隔
repr(object)返回指定值的字符串表示
round(number[, ndigits])四舍五入为指定的精度,正好为5时舍入到偶数
str(object)将指定的值转换为字符串。用于转换bytes时,可指定编码和错误处理方式
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号