(一)顺序结构
从上到下一行行执行,没有任何判断和跳转
(二)分支结构
使用布尔表达式或布尔值作为分支条件来进行分支控制
分支形式1:
if 布尔判断:
语句块
例如: 公园门口对游客国籍身份进行判断,如果是岛国人,不让进
nationality = input('What is your nationality?')
if nationality == 'Japan':
print('Please go away!')
What is your nationality?xxx
分支形式2:
nationality = input('What is your nationality?')
if nationality == 'Japan':
print('Please go away')
else:
print('Welcome...')
What is your nationality?xxx
Welcome...
分支形式3:
nationality = input('What is your nationality?')
if nationality == 'Japan':
print('Japan and Dog,Please go away!')
elif nationality == 'Dog':
print('Japan and Dog,Please go away!')
else:
print('Welcome...')
What is your nationality?xxx
Welcome...
if表达式 (类似其它编程语言的三目运算符)
age = 20
man = '青少年' if age<18 else '成年人'
print(man)
成年人
断言(也是一种分支控制)
断言是这样的结构
assert bool表达式 <- -在这里为True才会往下继续执行,否则会抛出一个AssertionError错误
age = 18
assert 18<=age<=80
print('是成年人了,可以单独旅行.')
是成年人了,可以单独旅行.
(三)循环结构
- 循环结构: 就在满足循环条件的情况下,反复执行一段代码块.
- 循环条件: 布尔表达式.
- 循环体: 反复执行的代码块.
- while循环
- for循环
3.1 while循环
语法形式
while 循环条件:
循环体
while循环在每次执行循环体之前,对"循环条件"进行判断,如果循环条件为真,则执行循环体部分;
循环体一般包括: 要执行的功能,另外一般包括对循环条件的控制,如果没有对循环条件的控制,这个循环就会无限执行下去,成为死循环
下面分别举例:
例,银行账户登录,如果连续输入错误三次,账户锁定
password = '123456'
errorTimes = 0
while errorTimes<3:
passwd = input('请输入账户密码: ')
if passwd==password:
print('密码验证通过,业务逻辑完成!')
errorTimes=0
break
else:
errorTimes+=1
msg = '密码错误次数到达3次,账户锁定.'if errorTimes==3 else '密码错误{0}次!'.format(errorTimes)
print(msg)
请输入账户密码: 123456
密码验证通过,业务逻辑完成!
例,通过while循环遍历列表(元组一样)
language = ['C','C++','Java','Python','JavaScript','Scala','Swift','kotlin','R','Julia']
index=0
while index<len(language):
print('Index: {0},\t Element: {1}'.format(index,language[index]))
index+=1
Index: 0, Element: C
Index: 1, Element: C++
Index: 2, Element: Java
Index: 3, Element: Python
Index: 4, Element: JavaScript
Index: 5, Element: Scala
Index: 6, Element: Swift
Index: 7, Element: kotlin
Index: 8, Element: R
Index: 9, Element: Julia
例,猜数字(提示大小)
result = 99
times = 0
while times<7:
number = int(input('请输入一个数字:'))
if number>result:
times+=1
print('猜大了,还有{0}次机会'.format(7-times))
elif number<result:
times+=1
print('猜小了,还有{0}次机会'.format(7-times))
else:
times+=1
print('结果正确,用了{0}次机会猜到正确结果'.format(times))
break
总之,循环会自动在每次执行循环体之前判断一下循环条件是否为True,来决定是否执行循环体.while循环适用于,不确定次数的循环,例如,我不清楚将要进行多少次尝试才会猜中数字,但是我只有一个边界条件,那就是小于7次,那就交给while自己去判断边界条件吧.
3.2 for循环
for循环用于遍历可迭代的对象
可迭代对象: 列表list,元组tuple,字典dict,集合set,字符串string,区间range都属于可迭代对象
先初步了解一下,可迭代对象中包含一个iter方法,该方法返回值一个对象实例,包含next()方法语法形式
for 变量(循环计数器) in 可迭代对象:
循环体
变量: 在每次循环中,自动被赋值,这个值就是可迭代对象中的每一个元素.
例,计算阶乘
num_input = input('Please input a number:')
nums = int(num_input)
result = 1
for i in range(1,nums+1):
result*=i
print('Factorial is: {0}'.format(result))
Please input a number:5
Factorial is: 120