第一周
python学习笔记和做的一些习题 (python编程快速上手——让繁琐工作自动化)
第一章节 python基础
一些常用的数学操作符总结(优先级从高到低):
操作符 | 操作 |
---|---|
** | 指数 |
% | 取余数 |
// | 整除 |
/ | 除法 |
* | 乘法 |
- | 减法 |
+ | 加法 |
常见数据类型总结:
数据类型 | 举例 |
---|---|
整型 | -2、-1、0、1 |
浮点型 | -1.20、-0.1、1.0、2.25 |
字符串 | ‘a’、‘abc’ 、‘aaa’、‘11cars’ |
字符串的连接:+
字符串的复制:*
赋值语句的构成:一个变量名、一个等号、以及要储存的值
变量名应该满足的条件:
1、只能是一个词
2、只可以包含字母、数字和下划线
3、不能用数字开头
而且变量名是区分大小写的。
常用函数
print()函数:将括号内的字符串显示在屏幕上;
input()函数:等待用户输入文本,并按回车键;
len()函数:字符串中字符个数;
str()函数:将传入值值求值为字符串形式;
int()函数:将传入值值求值为整数;
float()函数:将传入值值求值为浮点数;
第一章习题:
1、下面哪些是操作符,哪些是值?
*
'hello'
-88.8
-
/
+
5
操作符有:*、-、/、+
值:‘hello’、-88.8、5
2.下面哪个是变量,哪个是字符串?
spam
'spam'
变量:spam
字符串:‘spam’
3.说出 3 种数据类型。
三种数据类型:整型、浮点型、字符串
4.表达式由什么构成?所有表达式都做什么事?
表达式的构成: 运算操作符和操作数一起构成表达式;所有的表达式是在语句中,根据某种条件得出的或计算出的结果,然后经过语句来处理的代码。
5.本章介绍了赋值语句,如 spam = 10。表达式和语句有什么区别?
语句是可以单独执行的、能够产生实际效果的代码;表达式是在语句 中,根据某种条件得出的或计算出的结果,然后经过语句来处理的代码。
6.下列语句运行后,变量 bacon 的值是什么?
bacon = 20
bacon + 1
结果为20
7.下面两个表达式求值的结果是什么?
'spam' + 'spamspam'
'spam' * 3
结果都是spamspamspam
8.为什么 eggs 是有效的变量名,而 100 是无效的?
'100’是无效的变量名,因为变量名不能用数字开头。
'egg’是有效的变量名,因为变量名中只能是一个词、只能含有数字、字母、下划线,它含有字母;并且没有以数字开头。
9.哪 3 个函数能分别取得一个值的整型、浮点型或字符串版本?
int():求一个值的整型
float():求一个值的浮点型
str():求一个值的字符串
10.为什么这个表达式会导致错误?如何修复?
'I have eaten ' + 99 + ' burritos.'
+是字符串的连接符,其中99是整型,所以要求出99的字符串形式,用str(99):正确的表达式应为:'I have eaten '+str(99)+‘burritos’
第二章节 控制流
布尔值:True、False
常用的比较操作符:
操作符 | 含义 |
---|---|
== | 等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
布尔操作符:and、or、not
其中and、or是二元布尔操作符。
如果两个布尔值都为True,and操作符就将表达式求值为True,否则求值为False。
只要有一个布尔值为True,or操作符就将表达式求值为True,如果都为False,所求值为False。
and操作符的真值表:
表达式 | 结果 |
---|---|
True and True | Ture |
True and False | False |
False and True | False |
False and False | False |
or操作符的真值表:
表达式 | 结果 |
---|---|
True or True | Ture |
True or False | True |
False or True | True |
False or False | False |
not操作符:只作用于一个布尔值
not操作符的真值表
表达式 | 结果 |
---|---|
not True | False |
not False | True |
控制流元素:条件和代码块
条件:控制流语句的开始部分,并且条件总是求值为一个布尔值,根据条件求值的结果,来决定下一步做什么。
代码块:3条规则
- 缩进增加时,代码块开始。
- 代码块可以包含其他代码块。
- 缩进减少为零,或者减少为外面包含代码块的缩进,代码块就结束了。
控制流语句
if 语句:
if name == 'xiaoming': ##if 条件:
print('Hello,xiaoming') ## 代码块(if子句)
else 语句:
if name == 'xiaoming':
print('Hello,xiaoming')
else: ##else 条件(name != 'xiaoming'):
print('Hello!') ## 代码块(else子句)
elif 语句:
if name == 'xiaoming':
print('Hello,xiaoming')
elif name == 'xiaofang': ## elif 条件:
print('Hello,xiaofao') ## 代码块(elif子句)
elif name == 'dongdong':
print('Hello,dongdong')
while循环语句:可以让代码一遍有一遍的执行,while循环中,如果条件为True,子句就会执行。
i = 0
while i < 5: ## while 条件:
print('Hello!') ## 缩进的代码块(while子句)
i=i+1
break语句:让执行提前跳出循环,且break语句只包含break关键字。
while True:
print('Hello,name!') ##无限循环
name=input() ##输入名字
if name == 'xiaoming':
break ##输入名字为xiaoming,break语句就会运行;否则继续循环
print('Hello,xiaoming') ## 已跳出循环
continue语句:用于循环内部,执行时遇到就会跳回循环开始处。
while True:
print('Hello!')
name = input()
if name != xiaoming
continue
print('Oh!xiaoming,nice to meet you!')
for 循环和range()函数:可以固定程序执行次数。
for i in range(5):
print('Hello!+str(i)')
for循环和while循环可以做同样的事,for循环更加简洁一点。
range()开始,停止、步长参数:
for i in range(0,10) ## 0为起始值,10为终值,默认1为步长
ptint(i) ##输出结果为0、1、2、3、4、5、6、7、8、9
for i in range(0,10,2) ## 0为起始值,10为终值,2为步长
ptint(i) ##输出结果为0、2、4、6、8
导入模块
import()语句
from import语句
第二章习题
1.布尔数据类型的两个值是什么?如何拼写?
布尔数据类型:True、False。
2、3 个布尔操作符是什么?
3个布尔操作符:and、or、not。
3.写出每个布尔操作符的真值表(也就是操作数的每种可能组合,以及操作
的结果)。
3、真值表:
and操作符的真值表:
表达式 | 结果 |
---|---|
True and True | Ture |
True and False | False |
False and True | False |
False and False | False |
or操作符的真值表:
表达式 | 结果 |
---|---|
True or True | Ture |
True or False | True |
False or True | True |
False or False | False |
not操作符的真值表
表达式 | 结果 |
---|---|
not True | False |
not False | True |
4.以下表达式求值的结果是什么?
(5 > 4) and (3 == 5)
not (5 > 4)
(5 > 4) or (3 == 5)
not ((5 > 4) or (3 == 5))
(True and True) and (True == False)
(not False) or (not True)
结果为:
5.6 个比较操作符是什么?
六个比较操作符:
操作符 | 含义 |
---|---|
== | 等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
6.等于操作符和赋值操作符的区别是什么?
等于操作符"==":求两边值是否相等。
赋值操作符"=":将右边的值放入左边的变量中。
7.解释什么是条件,可以在哪里使用条件。
条件就是控制流语句的开始部分,并且条件总是求值为一个布尔值,根据条件求值的结果,来决定下一步做什么。一般控制流语句中都含有条件。
8.识别这段代码中的 3 个语句块:
spam = 0
if spam == 10:
print('eggs')
if spam > 5:
print('bacon')
else:
print('ham')
print('spam')
print('spam')
赋值语句、if语句、else语句
9.编写代码,如果变量 spam 中存放 1,就打印 Hello,如果变量中存放 2,就打印 Howdy,如果变量中存放其他值,就打印 Greetings!
spam = int(input()) ##1、2为整型,所以要用到int()将输入值转为整型
if spam == 1:
print('Hello')
elif spam == 2:
print('Howdy')
else:
print('Greetings!')
10.如果程序陷在一个无限循环中,你可以按什么键?
如果一个程序陷入无限循环,可以用Ctrl+C键中止循环。
11.break 和 continue 之间的区别是什么?
break语句执行后可以让整个循环停止;continue语句执行后返回到循环开始的地方。
12.在 for 循环中,range(10)、range(0, 10)和 range(0, 10, 1)之间的区别是什么?
range(10)中只含有一个参数,10为终值,默认从0开始,且步长为1。
range(0,10)中含有两个参数,0为起始值,10为终值,默认步长为1。
range(0,10,1)中含有三个参数,0为起始值,10为终值,步长为1。
13.编写一小段程序,利用 for 循环,打印出从 1 到 10 的数字。然后利用 while循环,编写一个等价的程序,打印出从 1 到 10 的数字。
从1到10:
for i in range(1,11):
print(i)
i=1
while i < 11:
print(i)
i=i+1
14.如果在名为 spam 的模块中,有一个名为 bacon()的函数,那么在导入 spam模块后,如何调用它?
spam.bacon()
第三章习题
1.为什么在程序中加入函数会有好处?
函数的一个主要目的就是将需要多次执行的代码放在一起。
比如:创建一个函数hello()
def hello() ##定义函数
print('Hello')
print('Where are you from?')
hello() ##函数调用
hello()
hello() ##执行三次函数
程序执行结果为
print('Hello')
print('Where are you from?')
print('Hello')
print('Where are you from?')
print('Hello')
print('Where are you from?')
上面的函数hello()相当于将print(‘Hello’)和print(‘Where are you from?’) 这两个需要多次执行的代码放在一起。
2.函数中的代码何时执行:在函数被定义时,还是在函数被调用时?
函数中的代码在函数被调用时执行。
def hello(name): ##定义函数,hello为函数名称,name为参数
print('Hello,' + name)
hello('xiaoming') ##调用函数,此时函数被执行
hello('honghong')
输出结果:
3.什么语句创建一个函数?
可以用def语句创建一个函数。
4.一个函数和一次函数调用有什么区别?
一个函数表示的是函数被定义,可以用def语句来定义自己需要的函数,如 def name();
一次函数调用表示这个函数被执行,如name();
5.Python 程序中有多少全局作用域?有多少局部作用域?
有一个全局作用域,有无数个局部作用域。
6.当函数调用返回时,局部作用域中的变量发生了什么?
当函数调用返回时,余部作用域中的变量被销毁。
7.什么是返回值?返回值可以作为表达式的一部分吗?
返回值是函数调用求值的结果,称为函数的“返回值”。如果在return语句中使用了表达式,返回值就是该表达式求值结果;也可以直接返回为一个值。
8.如果函数没有返回语句,对它调用的返回值是什么?
如果函数没有返回语句,对它调用的返回值为None。
9.如何强制函数中的一个变量指的是全局变量?
可以使用global关键字强制函数中的一个变量指的是全局变量。
10.None 的数据类型是什么?
None 的数据类型NoneType。
11.import areallyourpetsnamederic 语句做了什么?
用import语句导入了areallyourpetsnamederic模块。
12.如果在名为 spam 的模块中,有一个名为 bacon()的函数,在引入 spam 后,如何调用它?
函数可以用spam.bacon()来调用。
13.如何防止程序在遇到错误时崩溃?
使用try expect 语句
14.try 子句中发生了什么?except 子句中发生了什么?
如果在try子句中的代码发生了一个错误,程序执行就会立即转到except子句的代码。
第三章节实践
1、编写一个名为 collatz()的函数,它有一个名为 number 的参数。如果参数是偶数,那么 collatz()就打印出 number // 2,并返回该值。如果 number 是奇数,collatz()就打印并返回 3 * number + 1。
然后编写一个程序,让用户输入一个整数,并不断对这个数调用 collatz(),直到函数返回值1(令人惊奇的是,这个序列对于任何整数都有效,利用这个序列,你迟早会得到 1!既使数学家也不能确定为什么。你的程序在研究所谓的“Collatz序列”,它有时候被称为“最简单的、不可能的数学问题”)。
def collatz(number):
print(number)
if number == 1:
print('结束!')
elif number % 2 == 0:
collatz(number//2)
else :
collatz(3*number+1)
while True:
n=int(input('请输入一个数字: '))
if collatz(n) == 1:
break