程序的基本结构

顺序、分支、循环

分支结构

if语句

if <条件>:
<语句块>

if-else语句

Ⅰ

if <条件>:

​ <语句块>

else:

​ <语句块>

Ⅱ

<表达式1> if <条件> else <表达式2>

if-elif-else

if <条件1>:

​ <语句块1>

elif <条件2>:

​ <语句块2>

…

else:

​ <语句块N>

循环结构

遍历循环:for语句

Ⅰ

for <循环变量> in <遍历结构>:

​ <语句块>

Ⅱ

for <循环变量> in <遍历结构>:

​ <语句块1>

else:

​ <语句块2>

for循环的执行次数是根据遍历结构中的元素个数确定的。

遍历结构可以是“字符串、文件、组合数据类型、range()函数”

循环N次 遍历文件 fi的每一行 遍历字符串s 遍历列表Is
for i in range(N):
<语句块>
for line in fi:
<语句块>
for c in s:
<语句块>
for item in Is:
<语句块>

无限循环 while语句

Ⅰ

while <条件>:

​ <语句块>

Ⅱ

while <条件>:

​ <语句块1>

else:

​ <语句块2>

True继续循环 False终止

循环保留字 break 和 continue

break 跳出最内层for或者while循环,但继续执行外层循环,每个break语句只能跳出当前层次的循环。

结束整个循环过程,不再判断执行循环的条件是否成立。

continue 结束当前循环,跳出后继续执行下一未执行的语句。结束本次循环,但不终止整个程序。

random库

函数 描述
seed(a=None) 初始化随机数种子,默认值为当前系统时间
random() 生成一个[0.0, 1.0)之间的随机小数
randint(a, b) 生成一个[a,b]之间的整数
getrandbits(k) 生成一个k比特长度的随机整数
randrange(start, stop[, step]) 生成一个[start, stop)之间以step为步数的随机整数
uniform(a, b) 生成一个[a, b]之间的随机小数
choice(seq) 从序列类型,例如列表中随机返回一个元素
shuffle(seq) 将序列类型中的元素随机排列,返回打乱后的序列
sample(pop, k) 从pop类型中随机选取k个元素,以列表类型返回

程序的异常处理

Python通过try、except等保留字提供异常处理功能

try:

​ <语句块1>

except <异常类型>:

​ <语句块2>

高级用法

try:

​ <语句块1>

except <异常类型1>:

​ <语句块2>

…

except <异常类型N>:

​ <语句块N+1>

except :

​ <语句块N+2>

(PS:书上最后一句写着这样一组对话🌑:

“——没看懂,到底什么时候该使用异常语句呢?

——程序员都是对它又爱又恨,其实,想用就用吧,用户体验好才是王道!”

看到此处 内心OS:????????)

Exercises

4.1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#4.1猜数游戏
from random import randint
number=randint(0,9)
n=1
while 1:
a = eval(input("Please guess a number form 0 to 9:"))
if a > number:
print("遗憾,太大了")
n=n+1
elif a < number:
print("遗憾,太小了")
n=n+1
else:
print("预测{:d}次,你猜中了!".format(n))
break

4.1

4.2

1
2
3
4
5
6
7
8
9
10
11
12
13
#4.2统计不同字符个数
string = input("Please input a string:")
num,char,space,other=0,0,0,0
for i in string:
if 'a' <= i <= "z" or 'A' <= i <= 'Z':
char+=1
elif '0' <= i <= '9':
num+=1
elif i == ' ':
space += 1
else:
other += 1
print("其中英文字符有{}个,数字有{}个,空格有{}个,其他字符有{}个".format(char,num,space,other))

4.2

4.3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#4.3最大公约数
m,n=eval(input("Input two int number(such as 1,2):"))
ji = m * n
if m < n:
t = m
m = n
n = t
else:
m = m
n = n
r = m % n
while r != 0:
m = n
n = r
r = m
r = m % n
print("最大公约数为{}".format(n))
print("最大公约数为{:.0f}".format(ji/n))

4.3

4.4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#4.4
from random import randint,seed
seed(100)
number=randint(0,100)
n=1
while 1:
a = eval(input("Please guess a number:"))
if a > number:
print("遗憾,太大了")
n=n+1
elif a < number:
print("遗憾,太小了")
n=n+1
else:
print("预测{:d}次,你猜中了!".format(n))
break

4.4

4.5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#4.5
from random import randint,seed
seed()
number=randint(0,100)
n=1
while 1:
try:
a = eval(input("Please guess a number 0 to 100:"))
if a > number:
print("遗憾,太大了")
n=n+1
elif a < number:
print("遗憾,太小了")
n=n+1
else:
print("预测{:d}次,你猜中了!".format(n))
break
except NameError:
print("输入内容必须为整数!")
n=n+1

4.5