Python3 学习手册(二) 流程控制语句

上一篇,我们学习了Python中的基本数据类型,也顺带讲了下while循环。本篇开始系统的介绍一些流程控制语句。为了方便演示,本篇开始将部分源码写成.py文件,然后运行测试。
1.gif-895.6kB
首次我们建立demo.py的文本文件。然后使用Python自带的IDIE打开编程即可。按F5即可运行程序。

if语句

和其他编程语言一样,Python也有if语句,但是跟其他编程语言却不太相同,倒是像其他语言中的switch语句,此外,需要注意的是else if 应写为elif。务必记住,条件体内一定要缩进,否则会报错。

1
2
3
4
5
6
7
x=int(input("请输入一个整数:")); #这里使用int()进行转型,相当于java中的Integer.parseInt
if x<0:
print("该数小于0");
elif x==0:
print("该数等于0");
else :
print("该数大于0");

for语句

for循环相当于java中的for-each语句,使用for [x] in [x] :形式,第一个参数表示你取的名字,第二个参数表示要遍历的列表。

1
2
3
4
5
6
7
8
words=['你','你好','你们','你们好'];
for w in words: #遍历list
print(w);

print('第二次循环--->')

for w in words[1:]:# 指定遍历范围
print(w);

image_1ala11bg0h9fl8m15mukeejgm12.png-5.5kB

如果只是想来个从0到9的循环,该怎么做?使用range()函数。

1
2
for i in range(10):
print(i)

image_1ala23h8oqu63g81utb1d80bhe1f.png-2.2kB
当然,range也可以如下用法。

1
2
3
words=['你','你好','你们','你们好'];
for i in range(len(words)):
print(words[i])

range()也是可以指定范围的。
一个参数:表示0到stop(不包括)。
两个参数:start到stop(不包括)。
三个参数:start到stop(不包括),但是第三个参数step表示步数
image_1ala2bp681g9g2e8jdrhnui021s.png-4.3kB

break、continue和else语句

break语句等同于C语言,用于跳出最小for循环或while循环。与C语言不同的是python中循环语句可以有else条件。else只在for循环结束时执行(不包括break跳出导致的结束)。
以下的程序用来打印出10以内的素数:

1
2
3
4
5
6
7
8
9
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, '=', x, '*', n//x)
break
else:
print(n, '是一个素数')
else:
print('全部执行完毕')

结果为:

1
2
3
4
5
6
7
8
9
2 是一个素数
3 是一个素数
4 = 2 * 2
5 是一个素数
6 = 2 * 3
7 是一个素数
8 = 2 * 4
9 = 3 * 3
全部执行完毕

continue 语句用于继续下一个循环。

1
2
3
4
5
for num in range(2, 10):
if num % 2 == 0:
print('可以被2整除', num)
continue
print('不能被2整除', num)

image_1ampvle0i4qv1nv1ahe3s816qe9.png-5.9kB

定义函数

在了解定义函数之前,我们先来了解下,怎么使用python内置的函数。
求绝对值:abs
image_1amq0s1ra13gi1rvj51b1qvatgt13.png-1.8kB
求最大值:max
image_1amq0stol1ikd1nku16njgjd1rd1g.png-1.7kB

现在来自定义函数,自定义函数必须使用def来声明,以下定义了一个简单的求两个数之间最大值的函数。

1
2
3
4
5
def max(i ,j):
if i>j:
print(i)
else:
print(j)

定义完函数外就可以直接使用了。

1
max(9,10) # 10

当然我们可以给函数取一个别名,以下为取名m来使用
image_1amq14l4219331q3cqe6ivhs2h1t.png-2.4kB
但是我们发现以上函数有个缺陷,最大数无法赋值给一个变量。怎么使函数有返回值呢?只需使用return关键字即可。

1
2
3
4
5
6
7
8
9
def max(i, j):
if i > j:
return i
else:
return j


n = max(1, 11)
print(n) # 11,如果没有使用return 则为 None

定义函数时,可以给参数一个默认值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def max(i, j=10):
if i > j:
return i
else:
return j


n = max(1)
print(n) # 10
n = max(1,-1)
print(n) # 1

n = max(j=-1,i=3) #这里可以指明关键字
print(n) # 3

函数中使用可变参数。
*name 表示可变参数,**name表示关键字参数,内部包装为字典,字典相当于java中的map,需要指明参数名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def test(*arguments, **keywords):

for arg in arguments:
print(arg)
print("-" * 40)

for kw in keywords.keys(): # 获取字典的key集合
print(kw, ":", keywords[kw])



test("参数1", "参数2",
"参数3",
shopkeeper="字典1",
client="字典2",
sketch="字典3")

测试结果如下:
image_1amq79nj51tr01hnl1jro5olrce2a.png-5.8kB
当然,我们可以指明关键字。

1
def test(*arguments, *,city,age): ## 表示只能传入city和age的关键字参数

pass语句

pass这个语句表示什么事都不做。可以当做占位符来使用,产用来定义空函数,或空条件。因为python中不允许定义空函数,故用pass占位

1
2
def max(i, j=10):
pass

编程风格

  • 使用4个空格进行缩进
  • 每一行不要超过79个字符
  • 函数,类,代码块之间因加上空行
  • 尽量多写注释
  • 使用文档注释
  • 操作符左右,逗号后面记得加空格
  • 类名命名遵守驼峰规则,函数与方法遵守小写+下划线的形式