Python基础(三) - 分支与循环
2018-03-03 16:29
337 查看
分支语法
当程序运行的结果可能有两种或多种时,我们就可以使用分支语法来选择输出哪种结果,只要满足相应的条件,程序就会进入某个分支继续下去。Python中分支语法的格式为:
if 条件 : 相应的代码 elif 条件 : 相应的代码 else: 相应的代码
程序运行时,先从if语句开始,若满足条件,则进入运行相应的代码,并且不会再进入elif与else的语句;如果if条件不成立,则进入下一个elif语句的判断,满足条件则运行相应代码,并且不再进入其他分支;若if与elif语句条件都不满足,则直接进入else语句运行代码
循环结构
当一段程序需要运行多次或者不知道会运行多少次时,我们可以使用循环结构来满足,设定相应的次数或者设定满足条件,则可以让程序按照要求执行多次循环结构语法:
for循环# xxx:变量名,整型,会随着循环渐渐增大,第一次进入语句时xxx = a,若xxx命名为‘_‘则表示在循环中不需要使用此变量 # a:a表示起始数值,默认为0 # b:b表示最大数值,当xxx大于b时,循环结束 # c:c表示每一次循环后xxx的增量,默认为1 for xxx in range(a, b, c): 相应的代码
while循环
''' 当满足while后面的条件时,while里的代码会一直执行,直到条件不满足是循环结束 使用while语句需要注意不要变成死循环 ''' while 条件 : 相应的代码
分支与循环语法应用
1. 模拟登入,输入账号密码
import getpass acount = input('请输入用户名:') # 使用getpass库使密码输入不再是明文 password = getpass.getpass('请输入密码:') # 分支需要注意缩进,如果不缩进则不受分支语句控制 if acount == 'admin' and password == '123456': print('成功登入') else: print('用户名或密码错误')
2. 求方程式解
''' 5x+3 (x < -1) f(x) = 2x-1 (-1 <= x <= 1) 3x-5 (x > 1) ''' x = float(input('请输入x的值:')) if x < -1: y = 5*x+3 print('y:%.2f' % y) elif x>=-1 and x<=1: y = 2*x-1 print('y:%.2f' % y) else: y = 3*x-5 print('y:%.2f' % y)
3. 输入成绩,评价等级
''' 90分及以上:A 80-89:B 70-79:C 60-69:D 60分以下:E ''' grade = float(input('请输入成绩:')) if grade >= 90: print('等级为A') elif grade >= 80: print('等级为B') elif grade >= 70: print('等级为C') elif grade >= 60: print('等级为D') else: print('不及格') # 官方建议使用扁平化代码优于嵌套型 ''' if grade >= 90: print('等级为A') else: if grade >= 80: print('等级为B') else: if grade >= 70: print('等级为C') else: if grade >= 60: print('等级为D') else: print('不及格') '''
4. 生成随机数
import random # 随机数模块 # from random import random # from math import pi, sqrt # 使用from语法可直接从模块导入需要使用的方法而不用再在方法前加模块名 如 print(random()) # random生成随机小数[0,1) print(random.random()) # randint生成随机整数[a,b],a和b自行给,a<=b print(random.randint(1,6))
5. 投骰子
import random random_num = random.randint(1,6) if random_num == 1: print('骰出了1,你是非洲酋长') elif random_num == 2: print('骰出了2,你比非洲酋长好一点') elif random_num == 3: print('骰出了3,你的运气一般般') elif random_num == 4: print('骰出了4,你的运气还不错') elif random_num == 5: print('骰出了5,你是欧洲人呢') else: print('哇,骰出了6,欧皇诞生!')
6. 统计点数出现次数
from random import randint f1 = 0 f2 = 0 f3 = 0 f4 = 0 f5 = 0 f6 = 0 # x为自定义变量名,在每次循环后数字+1 for x in range(6000): random_num = randint(1,6) if random_num == 1: f1 += 1 elif random_num == 2: f2 += 1 elif random_num == 3: f3 += 1 elif random_num == 4: f4 += 1 elif random_num == 5: f5 += 1 else: f6 += 1 print('1点次数:%d' % f1) print('2点次数:%d' % f2) print('3点次数:%d' % f3) print('4点次数:%d' % f4) print('5点次数:%d' % f5) print('6点次数:%d' % f6)
7. 华氏度与摄氏度转换
# 华氏度 = 32 + 摄氏度*1.8 # 摄氏度 = (华氏度 - 32)/1.8 choose = int(input('华氏度转摄氏度请输入0,摄氏度转华氏度请输入1:')) temper = float(input('请输入温度:')) if choose == 0: # print('华氏度') temper2 = (temper -32)/1.8 print('%.2f华氏度 = %.2f摄氏度' % (temper,temper2)) elif choose == 1: # print('摄氏度') temper2 = 32 + temper*1.8 print('%.2f摄氏度 = %.2f华氏度' % (temper,temper2)) else: print('输入错误')
8. 输入三边长,求三角形周长和面积
import math a = float(input('请输入第一条边长:')) b = float(input('请输入第二条边长:')) c = float(input('请输入第三条边长:')) if (a+b>c and a+c>b and b+c>a): dd = (a+b+c)*0.5 ss = math.sqrt(dd*(dd-a)*(dd-b)*(dd-c)) print('三角形周长:%.2f 三角形面积:%.2f' % (2*dd, ss)) else: print('输入边长不可组成三角形')
9. 求1到100的和
### 1到100求和 x = 0 for num in range (101):# range括号内若只写一个数值,则默认从零开始计数,每次数值+1 x += num print(x)
10. 求1到100偶数的和
### 1到100的偶数的和 x = 0 for num in range (101):# range(x,y,z)x是起始值,y是终止值,z是步长 if num % 2 == 0: x += num print(x)
11. 求1到100 中3或5的倍数的和
### 1到100 中3或5的倍数的和 x = 0 for num in range (101): if num % 3 ==0 or num % 5 == 0: x += num print(x) ---------- x = 0 num = 0 while num < 101: if num % 3 == 0 or num % 5 == 0: x += num num += 1 print(x)
12. 猜1到100之间的一个数
# 人猜数字 import random real_num = random.randint(1,100) the_num = 0 count_num = 0 while the_num != real_num: the_num = int(input('请输入你猜的数字:')) if the_num > real_num: print('很遗憾,猜的数字大了') elif the_num < real_num: print('很遗憾,猜的数字小了') count_num += 1 if count_num > 7: print('已经猜了%d次了哦,智商需要提高了~' % count_num) print('恭喜猜对数字:%d,一共猜了%d次' % (real_num, count_num)) ---------- # 机器猜数字 answer = 0 min_num = int(input('最小数是?')) max_num = int(input('最大数是?')) game_over = False while not game_over: answer = (min_num + max_num) // 2 my_answer = input('我猜是%d,对了吗?' % answer) if my_answer == '大一点': min_num = answer elif my_answer == '小一点': max_num = answer elif my_answer == '猜对了': game_over = True else: print('不太明白你的意思')
13. 人机猜拳
import random print('人机猜拳规则:0为石头,1为剪刀,2为布') person_num = 1000 comput_num = 1000 game_over = False while not game_over: is_plus = 0 is_over = False while not is_over: is_plus = int(input('人类:%d分,电脑:%d分,请下注:' % (person_num, comput_num))) if is_plus > comput_num or is_plus > person_num: print('电脑或你的点数不够,下注失败') else: is_over = True person_ans = int(input('请选择:')) comput_ans = random.randint(0,2) if person_ans == comput_ans: print('平手') elif person_ans == 0 and comput_ans == 1: print('人出石头,电脑出剪刀,人胜') person_num += is_plus comput_num -= is_plus elif person_ans == 0 and comput_ans == 2: print('人出石头,电脑出布,电脑胜') person_num -= is_plus comput_num += is_plus elif person_ans == 1 and comput_ans == 0: print('人出剪刀,电脑出石头,电脑胜') person_num -= is_plus comput_num += is_plus elif person_ans == 1 and comput_ans == 2: print('人出剪刀,电脑出布,人胜') person_num += is_plus comput_num -= is_plus elif person_ans == 2 and comput_ans == 0: print('人出布,电脑出石头,人胜') person_num += is_plus comput_num -= is_plus elif person_ans == 2 and comput_ans == 1: print('人出布,电脑出剪刀,电脑胜') person_num -= is_plus comput_num += is_plus else: print('输入有误') if person_num == 0: print('电脑获胜!') game_over = True elif comput_num == 0: print('人类获胜!') game_over = True
14. 计算个人所得税
# 不要在if else里面直接print 重复率太高且不好修改 money = float (input('请输入本月收入:')) wu_xian_yi_jin = float(input('请输入五险一金所扣费用:')) diff = money - wu_xian_yi_jin - 3500 tax = 0 deduction = 0 if diff > 80000: tax = 0.45 deduction = 13505 elif diff > 55000: tax = 0.35 deduction = 5505 elif diff > 35000: tax = 0.3 deduction = 2755 elif diff > 9000: tax = 0.25 deduction = 1005 elif diff > 4500: tax = 0.2 deduction = 555 elif diff > 1500: tax = 0.1 deduction = 0 else: tax = 0 deduction = 0 personal = abs(diff * tax - deduction) # abs() 求绝对值 print('个人所得税为:%d元' % personal)
15. 买鸡问题
# 100元买鸡,公鸡5元,母鸡3元,小鸡一元三只,刚好100只鸡,问分别多少只 ''' for gong_ji in range(0, 21): for mu_ji in range(0, (100-(5*gong_ji))//3): for xiao_ji in range(0, 100,3): if gong_ji+mu_ji+xiao_ji == 100 and 5*gong_ji+3*mu_ji+xiao_ji//3 == 100: print(gong_ji,mu_ji,xiao_ji) ''' # 提升效率 for gong_ji in range(0, 21): for mu_ji in range(0, (100-(5*gong_ji))//3): xiao_ji = 100 - gong_ji - mu_ji if xiao_ji % 3 == 0 and 5*gong_ji+3*mu_ji+xiao_ji//3 == 100:# 此处使用//原因请看 #警告 print(gong_ji,mu_ji,xiao_ji)
16. 捕鱼问题
# 作业3 有5人捕鱼,鱼很多,第二早,a把鱼分五份,多一条扔掉,拿一份,b分五份,多一条扔了,拿一份,cde同样操作,问至少多少条鱼 fish = 1 while True: total = fish is_over = True for _ in range (5): if (total - 1) % 5 == 0: total = (total - 1) // 5 * 4 else: is_over = False break if is_over: print(fish) break fash += 1
17. 完美数问题
# 完美数:一个数等于除了自身以外所有因子的和 # 输出10000以内所有完美数 import time import math start = time.time() for num in range(2,10001): total_factor = 0 for factor in range(2, int(math.sqrt(num)) + 1): if num % factor == 0: total_factor += (factor + (num / factor == factor and 0 or num / factor)) if total_factor + 1 == num: print(num) end = time.time() print(end - start)
相关文章推荐
- 零基础入门学习Python(9)--了不起的分支和循环3
- python基础教程-第2章节 分支,循环,还有条件
- 零基础入门学习Python(9)--了不起的分支和循环3
- python基础教程之分支、循环简单用法
- 【零基础入门学习Python笔记007】了不起的分支和循环1:打飞机框架
- python3.6基础之分支和循环
- 零基础入门学习Python(7)--了不起的分支和循环1
- 零基础入门学习Python(7)--了不起的分支和循环1
- 【零基础入门Python学习笔记008】了不起的分支和循环2
- python 基础(一)语句分支循环
- python基础教程之分支、循环简单用法
- 【零基础入门学习Python笔记009】了不起的分支和循环3
- python基础-条件分支和循环
- 零基础入门学习Python(8)--了不起的分支和循环2
- 零基础入门学习Python(8)--了不起的分支和循环2
- Python基础7- 流程控制之循环
- Python基础入门(十)- 布尔类型条件判断与循环
- 第二课 Python中的分支循环、逻辑运算和关系运算
- Python基础06 循环
- python--编程基础--for 循环