보웬 개요 :
- A, 파이썬 조건 결정
- 두 파이썬주기
- 셋째, 제어 루프
- 네, 파이썬 루프 포괄적 예
A, 파이썬 조건 결정
이중 지점은 다음과 같이 (모든 if 문의 흐름도에 설명 된 여러 가지 문 및 if 문 정확히 쉘 구현 동일하지만 구문 일부 차이 경우를 참조하여 실행중인 경우 파이썬 조건문과 if 문이다 )에서 쉘 :
참고 : 파이썬에서, 코드 들여 쓰기에 엄격한 요구 사항 때문에, 보통 4 공백 (들여 네 공백이됩니다 기본적으로) 문의 집합을 나타냅니다, 파이썬은 들여 쓰기 방식과 공간의 사용이다 문장의 집합을 나타냅니다, 거기에 우리 코드를 작성할 때 코드의 작업 부하를 줄일 수 있습니다.
1, 단일 지점 if 문 :
구현 과정 :
문 예제의 경우 단일 지점 :
money = 1000 #首先定义一个变量
if (money > 500): #测试条件是:如果money变量大于500,则条件成立,输出下面的内容
print '吃大餐' #输出的内容为吃大餐,该print语句就是if中的代码块,默认print前面有4个空格
2, 두 가지 if 문 :
구현 과정 :
문 예제의 경우 두 가지 :
money = 1000
if (money < 500):
print '吃大餐'
else:
print '吃土'
3, 멀티 지점 if 문 :
구현 과정 :
문 예 경우 다 지점 :
print '你还有多少钱?' #输出提示信息
money = input() #定义一个变量,变量值是接受键盘输入的值。
if (money > 500): #如果变量值大于500,则输出“吃大餐”
print '吃大餐'
elif (money > 100): #如果变量值大于100,则输出“吃盖饭”
print '吃盖饭'
else: #如果前面两个条件都不成立,则输出“吃土”
print '吃土'
문 일반적인 문제의 경우 사용 4 :
질문 (1) : 그 판사에서 내려 때문에, 논리적 인 오류가 발생하기 쉬운 경우-의 elif-else 문을 사용하면 조건에 해당하는 경우, 다음 조건 판단이 수행되지 않으며, 단지 예를 들어 가지고, 다음 코드는 다음과 같이 기록되어있는 경우 :
print '你还有多少钱?' #输出提示信息
money = input() #定义一个变量,变量值是接受键盘输入的值。
if (money > 100): #如果变量值大于500,则输出“吃大餐”
print '吃大餐'
elif (money > 500): #如果变量值大于100,则输出“吃盖饭”
print '吃盖饭'
else: #如果前面两个条件都不成立,则输出“吃土”
print '吃土'
당신은 무슨 일이 일어날 것입니다 볼 수있다? 문제는보다 큰 값으로 100을 입력 한으로, 다음 출력, 완전한 실행이 출력되지, "멋진 식사", 첫 번째 테스트 조건이 설정 한 것이기 때문에, 당신이 800를 입력 한 경우에도 "밥 그릇을 먹는 '것입니다 첫 번째 코드 블록 후, 직접 나중에 실행되지 않는 경우-의 elif-else 문이 중 프로그램.
질문 (2) : 문은 문 블록이 오류를 저지를 가능성이 들여 쓰기되지 않는 경우, 다음 코드는 컴파일러 오류를 지시합니다 :
money = 1000 #首先定义一个变量
if (money > 500):
print '吃大餐' #这一行语句没有代码块,程序必定会报错,不能正常运行
뿐만 아니라 차이의 공간, 그들은 문의 다른 블록을 표명 한 경우에도 일관된 진술 들여 쓰기 공간의 동일한 수준을 보장하기 위해 다음과 같이 오차 모델은 다음과 같습니다
money = 1000 #首先定义一个变量
if (money > 500):
print '吃大餐'
print '吃大餐' #多了一个空格
질문 (3) : 습관은 종종 조건부 테스트 대장의 뒷면을 잊지 때문에 다른 언어의 사용 (느낌이 자신에 대해 얘기했다), 파이썬 친구를 켜 들어, 많은 관심이 필요합니다.
두 파이썬주기
종종 코드가 프로그램을 실행하는 반복해야, 파이썬은 잠시 순환을 제공합니다.
1, 반면 유통
루프는 다음과 같이 루프 문 블록 구문은 수행할지 여부를 결정하는 조건에 따라 결정되는 반면 :
while 循环语句:
循环操作语句
while语句的执行流程如下:
循环条件后面也要使用冒号,然后缩进写循环操作语句,先判断条件是否成立,如果为True,则执行循环操作语句,如果为False,则跳出循环
i = 1 #定义一个变量
sum = 0 #定义一个变量
while i <= 3: #测试条件是变量“i”小于或等于3,则执行下面循环体中的语句
print ('请输入第%d个月的工资:' %i) #等待键盘输入工资,并赋值给变量“i”
sum = sum + int(input()) #将上面键盘输入的工资数和变量sum相加,并在赋值给变量sum
i = i + 1 #执行一次变量“i”的值就+1。
#执行至此,然后返回去再进行判断,变量“i”是否小于或等于3,如果是,则再执行一遍循环语句;
#如果不是,则跳出循环,执行下面的语句
#注意,以下都没有缩进了,已经不属于while循环了
month = i - 1 #当循环条件不成立时,“i”的值都已经为4了,所以这里要减去1,并赋值给变量month
avg = sum / month #把3个月的工资总和除以月份,就是平均工资
print ('近%d个月的平均工资是%d' %(month,avg)) #输出平均工资信息
#在上面的输出语句中,“%d”表示将后面的%(month,avg)这两个变量的值,依次赋值给语句中的两个“%d”
执行的结果如下:
请输入第1个月的工资: #手动依次输入进三个月的工资
11000
请输入第2个月的工资:
12000
请输入第3个月的工资:
13000
近3个月的平均工资是12000 #最后的输出结果,OK!没问题。
字符串的格式化输出介绍
在上面的脚本中,使用了字符串的格式化输出,就是“%d”,字符串的格式化是将若干值插入带有“%”替代符的字符串中,从而可以动态地输出字符串,在上面的Python脚本中,字符串中的“%d”表示插入的是一个整型数据,字符串后面的“%i”表示取的是变量“i”的值。
字符串格式化中可以使用的替代符除了“%d”,还有其他替代符,如下:
上面三种替换符的使用情况:
(1)每行字符串中单个替代符的使用:
#脚本如下:
num = 5
numstr = "五"
numF = 5.55
print ("第%d名"%num)
print ("第%s名"%numstr)
print ("第%f名"%numF)
#执行结果如下:
第5名
第五名
第5.550000名
(2)字符串中还可以使用多个替代符,对应的变量使用元组即可,示例如下:
#脚本如下:
first = 1
second = 2
print ("第%d名和第%d名"%(first,second))
#执行结果如下:
第1名和第2名
使用多个替代符时,注意顺序不要放错,否则可能会出现类型不匹配的问题。
(3)还可以使用字典格式化多个值,如下:
#代码如下:
num = {"first":1,"second":2} #定义一个字典
print ( "第%(second)d名和第%(first)d名"%num )
#执行结果如下:
第2名和第1名
在上面代码中,因为字典是无序的,所以使用字典时需要把键指出来,明确哪个位置要用到哪个键值。
while循环的嵌套使用
while循环可以嵌套使用,示例代码如下:
#代码如下:
j = 1
prompt = '请输入员工姓名:'
while j <= 2:
sum = 0
i = 1
name = raw_input(prompt)
while i <= 3:
print '请输入第%d月的工资:' %i
sum = sum +input()
i = i + 1
i = i - 1
avg = sum / i
print '%s的近%d个月的平均工资是:%d' %(name,i,avg)
#执行结果如下:
请输入员工姓名:张三
请输入第1月的工资:
11000
请输入第2月的工资:
12000
请输入第3月的工资:
13000
张三的近3个月的平均工资是:12000
请输入员工姓名:李四
请输入第1月的工资:
7000
请输入第2月的工资:
8000
请输入第3月的工资:
9000
李四的近3个月的平均工资是:8000
员工平均工资计算完成!
在上面的代码中,外层循环(第一个while语句)用于输入员工姓名,用变量j控制循环的次数,共2次;内层循环(第二个while语句)用于输入近三个月的工资,用变量i控制,也就是在外层循环输入一个名字后,需要输入3次月工资,然后输出这个员工的平均工资,一共可以输入两个员工。第四行的代码放在了外层循环,是对sum变量做了清零,是因为每次输入一个人的近三个月的成绩后,sum都需要清零处理,以便计算下一个人的工资。如果不这样,之前的sum值就会保存,程序就无法达到预期的目的。
2、for循环
for循环是另一种用于控制循环的方式,while是使用条件判断执行循环,而for是使用遍历元素的方式进行循环。
(1)for循环的几种方式
for的语法结构如下:
for 变量 in 集合:
语句块
常用的有以下几种使用方式:
1)for循环可以对字符串进行遍历,逐个获得字符串的每个字符,示例如下:
#代码如下:
for letter in 'Python':
print 'Current letter:%s' %letter
#执行结果如下:
Current letter:P
Current letter:y
Current letter:t
Current letter:h
Current letter:o
Current letter:n
上面的代码中“for letter in 'Python' :”的作用是对“Python”字符串的字符逐个遍历,把字符赋值给变量letter,然后执行for对应的语句块,直到字符串取值完毕。看执行结果就知道怎么回事咯,这里就不啰嗦了。
2)for循环可以对列表和元组进行遍历,如下:
#代码如下:
Python = ['西瓜','苹果','香蕉']
for letter in Python:
print letter
#执行结果如下:
西瓜
苹果
香蕉
语句“for letter in Python:”的作用就是遍历列表中的元素,把元素赋值给letter,输出语句每次输出一个水果。
3)需要循环操作的内容相同时,可以用for循环结合range()函数使用,如下:
#代码如下:
for i in range(0,5):
print '每天进步一点点。'
#执行结果如下:
每天进步一点点。
每天进步一点点。
每天进步一点点。
每天进步一点点。
每天进步一点点。
range(0,5)输出的是一个列表,由第一个参数0开始,默认每次加1,当大于或等于第二个参数时结束,所以列表中不包括第二个参数值。range()函数中还可以写入第三个参数,如:range(0,5,2),意思是每次加2,最后的列表值是“[0,2,4]”,所以range()函数的作用是创建一个数字列表,取值范围是从起始数字开始到结束数字之前的内容。for循环可以对列表进行遍历,所以可以针对range()函数的结果进行遍历。
4)for循环示例:
#代码如下:
subjects = ('python','mysql','linux')
sum = 0
for i in subjects:
print '请输入%s的测试成绩:' %i
score = input()
sum +=score # 与sum = sum+score效果一样
avg = sum / len(subjects)
print '张三的平均测试成绩为%d' %avg
#执行结果如下:
请输入python的测试成绩:
80
请输入mysql的测试成绩:
90
请输入linux的测试成绩:
100
张三的平均测试成绩为90
上面代码的作用是接收3门课程的成绩,计算输出平均成绩,使用for循环遍历测试列表subjects,接受测试成绩后使用sum累加,最后输出平均成绩。
5)for循环嵌套举例
#代码如下:
staffs = ['张三','李四']
months = ['1','3','5']
for staff in staffs:
sum = 0
for month in months:
print '请输入%s的第%s个月的工资:' %(staff,month)
sum = sum + input()
avg = sum / len(months)
print '%s的平均工资是%d' %(staff,avg)
#执行结果如下:
请输入张三的第1个月的工资:
11000
请输入张三的第3个月的工资:
12000
请输入张三的第5个月的工资:
13000
张三的平均工资是12000
请输入李四的第1个月的工资:
21000
请输入李四的第3个月的工资:
22000
请输入李四的第5个月的工资:
23000
李四的平均工资是22000
上面代码中,第一次循环对员工姓名进行了遍历,第二层循环对所指定的月份进行了遍历。
6)任何语言中都有逻辑表达式,它是用逻辑运算符和变量连接起来的表达式,逻辑运算符如下所示:
逻辑运算符的使用举例:
举例1:
>>> print (not True)
False
>>> print (True and False)
False
>>> print (True or False)
True
举例2:
>>> score = 180
>>> if (score < 0 or score > 100): #如果score小于0或大于100,那么就为真
print '成绩错误,不能小于0或大于100'
成绩错误,不能小于0或大于100
>>> if (not (score > 0 and score < 100)): #如果score不大于0并且不小于100,那么就为真。
print '成绩错误,不能小于0或大于100'
成绩错误,不能小于0或大于100
三、循环的控制
동안 루프 작업, 가끔 주문주기의 정상적인 실행을 변경해야하는 경우에, 당신은 사이클 제어 문, 루프 제어 문을 달성하기 위해 사용 중단을 계속해야합니다.
1 브레이크 (인터럽트)
명령문 블록주기 break 문은 출구의 껍질에 해당하는 전체 사이클에서이어야합니다. 다음 예는 다음과 같다 :
#代码如下:
staffs = ['张三','李四']
months = ['1','3','5']
for staff in staffs:
sum = 0
for month in months:
print '请输入%s的第%s个月的工资:' %(staff,month)
score = input()
if (score < 0 or score > 50000):
print '输入的工资要大于0或者小于50000,循环退出'
break; # break语句,跳出这个循环
sum += score
avg = sum / len(months)
print '%s的平均工资是%d' %(staff,avg)
#执行结果如下:
请输入张三的第1个月的工资:
50001 #输入了一个比50000大的数字
输入的工资要大于0或者小于50000,循环退出
张三的平均工资是0
请输入李四的第1个月的工资:
2, (계속) 계속
휴식 시간과의 차이가 계속 : 다음과 같이 계속 전체주기의 끝이 아니라 루프 남아있는 명령문의 현재 라운드를 건너, 테스트주기는 다음주기를 입력 준비 상태를 재설정 :
#代码如下:
staffs = ['张三','李四']
months = ['1','3','5']
for staff in staffs:
sum = 0
i = 0
while (i < len(months)):
print '请输入%s的第%s个月的工资:' %(staff,months[i])
score = input()
if (score < 0 or score > 50000):
print '输入的工资要大于0或者小于50000,请重新输入。'
continue;
sum += score
i += 1
avg = sum / len(months)
print '%s的平均工资是%d' %(staff,avg)
#执行结果如下:
请输入张三的第1个月的工资:
50001
输入的工资要大于0或者小于50000,请重新输入。
请输入张三的第1个月的工资:
30000
请输入张三的第3个月的工资:
25000
请输入张三的第5个月的工资:
60000
输入的工资要大于0或者小于50000,请重新输入。
请输入张三的第5个月的工资:
20000
张三的平均工资是25000
请输入李四的第1个月的工资:
위의 코드에서, 두 번째 층은 월을 통해 루프 while 루프를 사용하는 동안, 직원들에게 재활용을 통해 첫 번째 레이어 루프, 두 번째 레이어 가장 가까운주기의 다음 라운드로 이동하는 것을 계속 사용하면 동안 조건이 충족되지 않은 경우 테스트 후, 다음, 계속 실행 코드 "내가 + = 1", 및 루프 동안 다시 실행, 실행하지 않았기 때문에 다시 호출 같은 달에 다시 입력 할 수 있습니다. 이러한 방식으로, 더 인간적.
네, 파이썬 루프 포괄적 예
다음 예제 요구 사항은 다음과 같습니다
- 메뉴 표시 동작, N은, E는, Q가 나타내는 문자로 표시되는 세 가지 옵션이있다;
- N은 입력 새로운 사용자 이름과 암호를 나타내고;
- E는 사용자 이름과 암호를 나타냅니다;
- Q는 프로그램을 종료한다.
1 등 전체 스크립트는 다음과 같습니다 :
#代码如下:
kgc = {}
prompt = '''
(N) ew user login
(E) ntering user login
(Q)uit
Enter choice:'''
while True:
choice = raw_input(prompt).strip()[0].lower()
print '\n--You picked : [%s]' %choice
if choice not in 'neq':
print '--invalid option,try again--'
else:
if choice=='n':
prompt1 = 'login desired:'
while True:
name = raw_input(prompt1)
if(kgc.has_key(name)):
prompt1 = '--name taken,try another:'
continue
else:
pwd = raw_input('password:')
kgc[name] = pwd
break
elif choice =='e':
name = raw_input('login:')
pwd = raw_input('password:')
password = kgc.get(name)
if password == pwd:
print '--welcome back--',name
else:
print '--login incorrect--'
else:
print 'quit'
break
#执行结果如下:
(N) ew user login
(E) ntering user login
(Q)uit
Enter choice:N
--You picked : [n]
login desired:张三
password:123
(N) ew user login
(E) ntering user login
(Q)uit
Enter choice:e
--You picked : [e]
login:张三
password:123
--welcome back-- 张三
(N) ew user login
(E) ntering user login
(Q)uit
Enter choice:q
--You picked : [q]
quit
>>>
이 코드의 역할과 의미를 설명 :
kgc = {} #首先定义一个空字典,用于存放新建的用户及密码
prompt = ''' #这是一段提示信息,三引号表示若需要输入多行内容时使用。
(N) ew user login
(E) ntering user login
(Q)uit
Enter choice:'''
while True: #条件是永远为真
choice = raw_input(prompt).strip()[0].lower()
#上面一段是等待键盘输入的字符串(n、q、e),strip()函数去掉字符串前后的空格,然后取第一个字符。
#函数lower()的作用是将字符变成小写字母,为后面的条件判断做准备
print '\n--You picked : [%s]' %choice #换行输出提示信息,提示你刚刚输入的是什么。
if choice not in 'neq': #如果输入的不是neq这三个字符其中之一
print '--invalid option,try again--' #那么输出一段错误提示信息
else: #否则执行下面的内容
if choice=='n': #如果输入的是“n”
prompt1 = 'login desired:' #定义一个提示信息的变量
while True: #进行while循环
name = raw_input(prompt1) #等待键盘输入用户名,提示信息就是上面定义的prompt1变量
if(kgc.has_key(name)): #如果输入的用户名已存在字典中,
prompt1 = '--name taken,try another:' #重新定义一下提示信息的变量内容
continue #然后执行continue语句,重新进行循环
else: #反之
pwd = raw_input('password:') #继续输入用户的密码
kgc[name] = pwd #然后将用户名和密码写入字典中
break #while循环结束
elif choice =='e': #如果输入的“e”
name = raw_input('login:') #那么等待键盘输入用户名,提示信息为“login”
pwd = raw_input('password:') #等待键盘输入密码,raw_input()括号中的内容时提示信息
password = kgc.get(name) #查询字典中的用户名对应的密码和输入的密码是否一致
if password == pwd: #如果一致
print '--welcome back--',name #则输出欢迎信息
else: #反之
print '--login incorrect--' #输出错误
else: #如果输入的不是n也不是e,又在neq三个字符中,那么输出的肯定是q了
print 'quit' #所以就退出咯
break #所以就退出咯
--------이 문서의 끝 지금까지 읽어 주셔서 감사합니다 --------