首先说明一下Python代码块的问题。Python有着严格的代码缩进要求,对于有C++、Java等编程经验的人来说,区分代码块是以花括号{}
形式进行划分的。但对于Python来说,Python区分代码块是以缩进形式进行划分的,即属于同一个代码块的代码有着相同的缩进,所以,在Python中,千万不要随意添加空格,一般我们使用Tab
制表符进行缩进,每次缩进为一个制表符长度,即4个空格。
代码块有以下规则:
要构造分支结构可以使用if
、elif
和else
关键字。下面例子中演示了如何构造一个分支结构。
"""
验证回答是否正确
Version: 1.0
Author: Caizi
"""
a =int(input('计算:1 + 2 = '))
# 如果计算正确,则打印"回答正确!"
if a == 3:
print('回答正确!')
else:
print("回答错误!")
如果if
条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了。
如果要构造出更多的分支,可以使用if...elif...else...
结构或者嵌套的if...else...
结构。
if 条件:
if子句1
if子句2
...
elif 条件:
elif子句1
elif子句2
...
else:
else子句1
else子句2
...
下面例子演示了如何利用多分支结构判断数字是正数、负数还是零。
"""
判断数字是正数、负数还是零
Version: 1.0
Author: Caizi
"""
a = int(input('请输入一个整数:'))
# 如果为0,则打印"此数为零!"
if a == 0:
print('此数为零!')
# 如果大于0,则打印"此数是正数!"
elif a > 0:
print('此数是正数!')
# 否则,打印"此数是负数!"
else:
print("此数是负数!")
当然,分支结构是可以嵌套的,即所谓的嵌套分支结构。例如上面的判断我们也可以写成下面的形式。
"""
判断数字是正数、负数还是零
Version: 2.0
Author: Caizi
"""
a = int(input('请输入一个整数:'))
# 如果为0,则打印"此数为零!"
if a == 0:
print('此数为零!')
else:
if a > 0:
print('此数是正数!')
else:
print("此数是负数!")
有C/C++/Java编程经验的人都知道,if语句可以用三元运算符简写。但在Python中,语法格式与它们并不一样,在Python中的格式为条件为True执行的表达式 if 条件表达式 else 条件为False执行的表达式
。下面的例子演示了如何使用Python中的三元运算符。
"""
三元运算符
Version: 1.0
Author: Caizi
"""
x = 0
print('x为零' if x == 0 else 'x不为零') # x为零
y = 1
print('y为零' if y == 0 else 'y不为零') # y不为零
循环结构就是程序中控制某条或某些指令重复执行的结构。在Python中构造循环结构有两种做法,一种是for-in
循环,一种是while
循环。
在明确知道循环执行的次数或者要对一个容器进行迭代,推荐使用for-in
循环。
# for-in循环格式
for 变量名 in range(范围):
循环子句1
循环子句2
...
例如下面代码中计算0~100求和的结果。
"""
求0~100的累加和
Version: 1.0
Author: Caizi
"""
sum = 0
for x in range(101):
sum += x
print(sum)
代码中的range(101)
可以用来构造一个从0到100的范围,当我们把这样一个范围放到for-in
循环中,就可以通过前面的循环变量x
依次取出从0到100的整数。
range()
函数,有三个参数,第一个参数为起始值,第二个参数为终止值,第三个参数为步长。
range(101)
:可以用来产生0到100范围的整数。range(50, 101)
:可以用来产生50到100范围的整数,相当于前面是闭区间后面是开区间。range(50, 101, 2)
:可以用来产生50到100的奇数,其中2是步长,即每次数值递增的值。range(100, 50, -2)
:可以用来产生100到50的偶数,其中-2是步长,即每次数字递减的值。要构造不知道具体循环次数的循环结构,我们使用while
循环。while
循环通过一个能够产生或转换出bool
值的表达式来控制循环,表达式的值为True
则继续循环;表达式的值为False
则结束循环。
下面的例子判断输入的密码是否正确,不正确则重新输入,直到你输入正确为止结束程序。
"""
检查输入的密码是否正确,直到你输入正确为止结束程序
Version: 1.0
Author: Caizi
"""
yourKey = '123456'
key = input('请输入密码:')
while True:
if key == yourKey:
print('密码正确。')
break
else:
print('密码输入错误!')
key = input('请重新输入密码:')
上面的代码中使用了break
关键字来提前终止循环,需要注意的是break
只能终止它所在的那个循环,即终止内层循环。除了break
之外,还有另一个关键字是continue
,它可以用来放弃本次循环后续的代码直接让循环进入下一轮,即直接进入下一轮循环。
循环结构是可以嵌套的,即所谓的嵌套循环。下面例子演示了如何通过嵌套的循环来输出一个九九乘法表。
"""
打印九九乘法表
Version: 1.0
Author: Caizi
"""
for i in range(1, 10):
for j in range(1, i + 1):
print('%d*%d=%d' % (i, j, i * j), end='\t')
print()
上面代码中的print()语句,写了个类似C/C++的格式输出写法,但与C/C++不同,在Python中的格式为:输出字符串与变量之间用%隔开,%后面加个括号填写要填入字符串的变量名,多个变量名用英文逗号隔开。
如果 while 后面的条件语句为 false 时,则执行 else 的语句块。
"""
循环判断大小
Version: 1.0
Author: Caizi
"""
count = 0
while count < 3:
print(count, '小于3')
count += 1
else:
print(count, '大于或等于3')
上面的代码输出为
0 小于3
1 小于3
2 小于3
3 大于或等于3
如果 for 没有循环完所有数据,则执行 else 的语句块。如果 for 循环完所有数据,则不执行 else 语句块。
"""
循环城市
Version: 1.0
Author: Caizi
"""
citys = ["Beijing", "Shanghai", "Shenzhen", "Guangzhou"]
for city in citys:
if city == "Shenzhen":
print("深圳!")
break
print("循环数据 " + city)
else:
print("没有循环数据!")
print("完成循环!")
上面的代码输出为
循环数据 Beijing
循环数据 Shanghai
深圳!
完成循环!