[TOC]
# 프라이머 :
즉, 유량 제어 흐름 제어는, 구체적으로는, 프로그램 실행의 흐름을 세 개의 구조체로 분할되어있는 제어 프로그램 실행의 흐름을 의미한다 : 서열의 구조 (우리는 기록하기 전에 코드 시퀀스 구조이다), 분지 구조 (사용 판정되는 경우), 환 구조 (하면서 사용)
그림 : 스푸핑 (20)
# 구조 Biantennary
2.1 분기 구조는 무엇입니까
분지 구조는 여러 가지 서브 코드 진위에 따라 대응하는 판정 조건을 수행하는 것이다
2.2 왜 분기 구조를 사용
때때로 인간은 같은 조건에 따라 뭔가를 결정해야합니다 : 오늘, 우산 비가 경우
따라서, 프로그램이 인간의 판단에 제공된 컴퓨터를 제어 할 수있는 적절한 메커니즘을 가져야
2.3 분기 구조를 사용하는 방법
### 2.3.1의 경우 문법
그림 : 스푸핑 (18)
분지 구조를 달성하기 위해 키워드로, 만약 전체 구문
if 条件1: # 如果条件1的结果为True,就依次执行:代码1、代码2,......
代码1
代码2
......
elif 条件2: # 如果条件2的结果为True,就依次执行:代码3、代码4,......
代码3
代码4
......
elif 条件3: # 如果条件3的结果为True,就依次执行:代码5、代码6,......
代码5
代码6
......
else: # 其它情况,就依次执行:代码7、代码8,......
代码7
代码8
......
# 注意:
# 1、python用相同缩进(4个空格表示一个缩进)来标识一组代码块,同一组代码会自上而下依次运行
# 2、条件可以是任意表达式,但执行结果必须为布尔类型
# 在if判断中所有的数据类型也都会自动转换成布尔类型
# 2.1、None,0,空(空字符串,空列表,空字典等)三种情况下转换成的布尔值为False
# 2.2、其余均为True
### 2.3.2 응용 프로그램의 경우 경우
그림 : 스푸핑 (19)
사례 1 :
경우 : 여성의 연령> 30 살, 후 : 전화 이모
age_of_girl=31
if age_of_girl > 30:
print('阿姨好')
사례 2 :
경우 : 여성의 연령> 30 살, 다음 : 다른 통화 이모 : 여성
age_of_girl=18
if age_of_girl > 30:
print('阿姨好')
else:
print('小姐好')
사례 3 :
경우 : 여성의 연령> = 18 <22 나이와 높이> (170) 및 무게 <100 년이고 아름다운, 다음 : 진실, 또는 다른 이야기 : 통화 이모 **
age_of_girl=18
height=171
weight=99
is_pretty=True
if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True:
print('表白...')
else:
print('阿姨好')
사례 4 :
경우 : 다음 점수> = 90 : 우수
좋은 : 점수> 다음 = 80 <90, 만약
일반 : 점수> 다음 = 70 <80, 만약
기타 조건 : 가난한
score=input('>>: ')
score=int(score)
if score >= 90:
print('优秀')
elif score >= 80:
print('良好')
elif score >= 70:
print('普通')
else:
print('很差')
사례 5 : 중첩 경우
#在表白的基础上继续:
#如果表白成功,那么:在一起
#否则:打印。。。
age_of_girl=18
height=171
weight=99
is_pretty=True
success=False
if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True:
if success:
print('表白成功,在一起')
else:
print('什么爱情不爱情的,爱nmlgb的爱情,爱nmlg啊...')
else:
print('阿姨好')
그림 : 스푸핑 (23)
연습 1 : 로그인 기능
name=input('请输入用户名字:').strip()
password=input('请输入密码:').strip()
if name == 'tony' and password == '123':
print('tony login success')
else:
print('用户名或密码错误')
연습 2 :
#!/usr/bin/env python
#根据用户输入内容打印其权限
'''
egon --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''
name=input('请输入用户名字:')
if name == 'egon':
print('超级管理员')
elif name == 'tom':
print('普通管理员')
elif name == 'jack' or name == 'rain':
print('业务主管')
else:
print('普通用户')
세 사이클 구조
3.1 원형 구조 란
루프 구조를 반복하는 코드 블록의 조각
3.2 왜 순환 구조
인간은 때때로 반복 뭔가가 필요
이 프로그램은 사람들의 컴퓨터가 사물이주기를 할 수있는 능력을 제어 할 수있는 적절한 메커니즘이 있어야합니다 그래서
3.3 루프 구조를 사용하는 방법
3.3.1 while 루프 구문
그림 : 스푸핑 (21)
이 파이썬 동안 조건부 루프 루프, 구문 동안이라고 메커니즘 두 종류의 루프,
while 条件:
代码1
代码2
代码3
......
# while的运行步骤:
# 步骤1:如果条件为真,那么依次执行:代码1、代码2、代码3、......
# 步骤2:执行完毕后再次判断条件,如果条件为True则再次执行:代码1、代码2、代码3、......,如果条件为False,则循环终止
그림 : while 루프
3.3.2 while 루프 응용 프로그램
그림 : 스푸핑 (19)
사례 I : while 루프의 기본 사용
사용자 인증 프로그램
#用户认证程序的基本逻辑就是接收用户输入的用户名密码然后与程序中存放的用户名密码进行判断,判断成功则登陆成功,判断失败则输出账号或密码错误
username = "jason"
password = "123"
inp_name = input("请输入用户名:")
inp_pwd = input("请输入密码:")
if inp_name == username and inp_pwd == password:
print("登陆成功")
else:
print("输入的用户名或密码错误!")
#通常认证失败的情况下,会要求用户重新输入用户名和密码进行验证,如果我们想给用户三次试错机会,本质就是将上述代码重复运行三遍,你总不会想着把代码复制3次吧。。。。
username = "jason"
password = "123"
# 第一次验证
inp_name = input("请输入用户名:")
inp_pwd = input("请输入密码:")
if inp_name == username and inp_pwd == password:
print("登陆成功")
else:
print("输入的用户名或密码错误!")
# 第二次验证
inp_name = input("请输入用户名:")
inp_pwd = input("请输入密码:")
if inp_name == username and inp_pwd == password:
print("登陆成功")
else:
print("输入的用户名或密码错误!")
# 第三次验证
inp_name = input("请输入用户名:")
inp_pwd = input("请输入密码:")
if inp_name == username and inp_pwd == password:
print("登陆成功")
else:
print("输入的用户名或密码错误!")
#即使是小白的你,也觉得的太low了是不是,以后要修改功能还得修改3次,因此记住,写重复的代码是程序员最不耻的行为。
#那么如何做到不用写重复代码又能让程序重复一段代码多次呢? 循环语句就派上用场啦(使用while循环实现)
username = "jason"
password = "123"
# 记录错误验证的次数
count = 0
while count < 3:
inp_name = input("请输入用户名:")
inp_pwd = input("请输入密码:")
if inp_name == username and inp_pwd == password:
print("登陆成功")
else:
print("输入的用户名或密码错误!")
count += 1
사례 II : 동안 사용 + 휴식
while 루프를 사용하면, 코드가 더 간소화 않지만, 문제는 사용자가 어떻게주기의 끝 오프를 수행, 올바른 사용자 이름과 암호를주기의 끝이 될 수 없습니다로 전환 된 후입니까? 의 그 어디에서 휴식!
username = "jason"
password = "123"
# 记录错误验证的次数
count = 0
while count < 3:
inp_name = input("请输入用户名:")
inp_pwd = input("请输入密码:")
if inp_name == username and inp_pwd == password:
print("登陆成功")
break # 用于结束本层循环
else:
print("输入的用户名或密码错误!")
count += 1
사례 III : 중첩 루프 + 휴식하는 동안
While 루프는 루프를 종료하기 위해 많은 레이어, 각 레이어를 중첩 된 경우 각 계층주기에서 휴식을 가질 필요가
username = "jason"
password = "123"
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
케이스 네 : 동안 중첩 루프 + 태그의 사용
대한 루프가 중첩 된 다층 레이어에 직접 순환에서 모든 레이어를 철회하는 것입니다 우리의 목적이 분명하면, 사실, 트릭이있다, 할 수있는 동안 모든 루프 조건은 하나의 변수, 변수의 초기를하는 동안 값은 변수 값 일단 모든 레이어 사이클 거짓 후 단부 층에 사실이다
username = "jason"
password = "123"
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
사례 5 : +는 계속 사용하면서
대표 루프 층의 끝을 중단 한 다음에 직접주기, 다음주기의 끝에 계속
# 打印1到10之间,除7以外的所有数字
number=11
while number>1:
number -= 1
if number==7:
continue # 结束掉本次循环,即本次循环continue之后的代码都不会运行了,而是直接进入下一次循环
print(number)
사례 5 : + 다른 사용하는 동안
while 루프, 우리는 다른 문으로 수의 뒷면에 루프 동안 제대로, 그들은 다른 우리가 정상적인주기의 종료 여부를 확인하는 데 사용할 수 있으며, 다른 문 뒤에 수행 할 실행의 브레이크 숙박이 있어야 할 때
count = 0
while count <= 5 :
count += 1
print("Loop",count)
else:
print("循环正常执行完啦")
print("-----out of while loop ------")
输出
Loop 1
Loop 2
Loop 3
Loop 4
Loop 5
Loop 6
循环正常执行完啦 #没有被break打断,所以执行了该行代码
-----out of while loop ------
구현 프로세스가 중단 인 경우, 다른 문이 실행되지 않습니다
count = 0
while count <= 5 :
count += 1
if count == 3:
break
print("Loop",count)
else:
print("循环正常执行完啦")
print("-----out of while loop ------")
输出
Loop 1
Loop 2
-----out of while loop ------ #由于循环被break打断了,所以不执行else后的输出语句
그림 : 스푸핑 (23)
연습 1 :
번호 1 내지 1007 배 (98 결과)의 최대 값을 찾는
number=100
while number>0:
if number%7==0:
print(number)
break
number-=1
연습 2 :
age=18
count=0
while count<3:
count+=1
guess = int(input(">>:"))
if guess > age :
print("猜的太大了,往小里试试...")
elif guess < age :
print("猜的太小了,往大里试试...")
else:
print("恭喜你,猜对了...")
루프 구문 3.3.3
그림 : 스푸핑 (22)
두번째 구현주기 구조는 루프에 대한 루프가 구현 될 수있는 반면 루프 사이클 값 (즉 순회 값) 루프가있을 때, 루프에 대한 이유가 사용되기 때문에, 할 수있는 루프를위한보다 간단하게,
루프 구문
for 变量名 in 可迭代对象: # 此时只需知道可迭代对象可以是字符串\列表\字典,我们之后会专门讲解可迭代对象
代码一
代码二
...
#例1
for item in ['a','b','c']:
print(item)
# 运行结果
a
b
c
# 参照例1来介绍for循环的运行步骤
# 步骤1:从列表['a','b','c']中读出第一个值赋值给item(item=‘a’),然后执行循环体代码
# 步骤2:从列表['a','b','c']中读出第二个值赋值给item(item=‘b’),然后执行循环体代码
# 步骤3: 重复以上过程直到列表中的值读尽
자전거 응용 프로그램에 대한 3.3.4
그림 : 스푸핑 (19)
사례 I : 디지털 인쇄 0-5
# 简单版:for循环的实现方式
for count in range(6): # range(6)会产生从0-5这6个数
print(count)
# 复杂版:while循环的实现方式
count = 0
while count < 6:
print(count)
count += 1
사례 II : 이송 사전
# 简单版:for循环的实现方式
for k in {'name':'jason','age':18,'gender':'male'}: # for 循环默认取的是字典的key赋值给变量名k
print(k)
# 复杂版:while循环确实可以遍历字典,后续将会迭代器部分详细介绍
사례 III : 중첩 된 루프
#请用for循环嵌套的方式打印如下图形:
*****
*****
*****
for i in range(3):
for j in range(5):
print("*",end='')
print() # print()表示换行
참고 : 휴식과도 루프 동안 같은 구문을 사용, 재활용을 위해 사용할 수 있습니다 계속
그림 : 스푸핑 (23)
연습 1 :
곱셈 테이블을 인쇄
for i in range(1,10):
for j in range(1,i+1):
print('%s*%s=%s' %(i,j,i*j),end=' ')
print()
운동 2 :
피라미드를 인쇄
# 分析
'''
#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()