一、分支结构:根据条件判断的真假去执行不同分支对应的子代码

1.1 if判定

      完整语法如下:

if 条件1:  #条件可以是任意表达式,如果条件1为True,则依次执行代码。
    代码1    
    代码2
    ...
elif 条件2:#如果条件2为True,则依次执行代码。
    代码3
    代码4
    ...
else:         #如果是其他情况,则依次执行代码。
    代码5
    代码6
    ...

     语法特点: 

1、python用相同缩进(4个空格表示一个缩进)来标识一组代码块,同一组代码会自上而下依次运行 。

2、条件可以是任意表达式,但执行结果必须为布尔类型,在if判断中所有的数据类型也都会自动转换成布尔类型

3、None,0,空(空字符串,空列表,空字典等)三种情况下转换成的布尔值为False

 

    举例:

score=input('>>:    ')
score=int(score)

if score >= 90:
    print('优秀')
elif score >= 80:
    print('良好')
elif score >= 70:
    print('普通')
else:
    print('很差')

   if 嵌套举例:

age_of_girl=20
height=165
weight=99
is_pretty=True
success=False

if age_of_girl >= 18 and age_of_girl < 22 and height > 160 and weight < 100 and is_pretty == True:
    if success:
        print('你好!')
    else:
        print('我喜欢你')
else:
    print('阿姨好')

二、循环结构:重复执行某段代码块

2.1  while 循环

     2.11循环的步骤:
               步骤1:如果条件为真,那么依次执行:代码1、代码2、代码3、......
               步骤2:执行完毕后再次判断条件,如果条件为True则再次执行:代码1、代码2、代码3、......,如果条件为False,则循环终止

      2.12语法结构:

while 条件:
     代码1     
     代码2     
     代码3

     举例:

username = "marsha"
password = "123456"
count = 0  # 记录错误验证次数,避免重复代码
while count < 3:
    inp_name = input("请输入用户名:")
    inp_pwd = input("请输入密码:")
    if inp_name == username and inp_pwd == password:
        print("登陆成功")
    else:
        print("输入的用户名或密码错误!")
        count += 1

     2.13  结束while循环的方式

        A: while循环 + break     # break 用于结束本层循环,要结束几层循环就要用几个break

username = "marsha"
password = "123456"
count = 0
while count < 3:    # 第一层循环
    inp_name = input("请输入用户名: ")
    inp_pwd = input("请输入密码: ")
    if inp_name == username and inp_pwd == password:
        print("登陆成功")
        while True:     # 第二层循环
            cmd = input('>>:  ')
            if cmd == 'quit':
                break     # 用于结束本层循环,即第二层循环
            print('run <%s>' % cmd)
        break    # 用于结束本层循环,即第一层循环
    else:
        print("输入的用户名或密码错误!")
        count += 1

 

  B: break循环 +continue :   # continue用于结束本次循环

number=11    # 打印1到10之间,除7以外的所有数字
while number>1:
    number -= 1
    if number==7:
        continue   #  结束本次循环
    print(number)

      C: break循环 +tag      #在循环中用同一个变量tag,如果tag为True,则继续,如果tag为False,就可以在某一层直接退出所用层的循环。

username = "marsha"
password = "123456"
count = 0
tag = True
while tag: 
    inp_name = input("请输入用户名:")
    inp_pwd = input("请输入密码:")
    if inp_name == username and inp_pwd == password:
        print("登陆成功")
        while tag:  
            cmd = input('>>: ')
            if cmd == 'quit':
                tag = False    # tag变为False, 所有while循环的条件都变为False 
                break
            print('run <%s>' % cmd)
        break  # 用于结束本层循环,即第一层循环
    else:
        print("输入的用户名或密码错误!")
        count += 1

    D: break循环+else    # 当while 循环正常执行完并且中间没有被break 中止的话,就会执行else后面的语句,所以我们可以用else来验证,循环是否正常结束

count = 0
while count <= 5 :
    count += 1
    print("Loop",count)
else:
    print("没有被break打断,else 正常运行了")
count = 0
while count <= 5 :
    count += 1
    if count == 3:
        break     
    print("Loop",count)
else:   
    print("见不到我了")  #被break 打断,else 不会运行了

    2.2  for循环:   #在循环取值(即遍历值)时for循环比while循环的使用更为简洁

      2.21语法结构:

for 变量名 in 可迭代对象: # 可迭代对象可以是字符串\列表\字典
    代码一
    代码二
    ...

     举例:

for count in range(6):  # range(6)会产生从0-5这6个数
    print(count)
for k in {'name':'marsha','age':49,'gender':'male'}:  # for 循环默认取的是字典的key赋值给变量名k
    print(k)
#请用for循环嵌套的方式打印如下图形:
*****
*****
*****

for i in range(3):
    for j in range(5):
        print("*",end='')
    print()     # print()表示换行
#请用for循环打印九九乘法表

for i in range(1,10):
    for j in range(1,i+1):
        print('%s*%s=%s' %(i,j,i*j),end=' ')
    print()
#请用for循环打印金字塔

# 分析
'''
#max_level=5
     *        # current_level=1,空格数=4,*号数=1
    ***       # current_level=2,空格数=3,*号数=3
   *****      # current_level=3,空格数=2,*号数=5
  *******     # current_level=4,空格数=1,*号数=7
 *********    # current_level=5,空格数=0,*号数=9

# 数学表达式
空格数=max_level-current_level
*号数=2*current_level-1
'''

# 实现:
max_level=5
for current_level in range(1,max_level+1):
    for i in range(max_level-current_level):
        print(' ',end='') #在一行中连续打印多个空格
    for j in range(2*current_level-1):
        print('*',end='') #在一行中连续打印多个空格
    print()

2.22 for循环与break\continue的使用同while