分支语法
当程序运行的结果可能有两种或多种时,我们就可以使用分支语法来选择输出哪种结果,只要满足相应的条件,程序就会进入某个分支继续下去。 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('请输入用户名:' )
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
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. 华氏度与摄氏度转换
choose = int (input('华氏度转摄氏度请输入0,摄氏度转华氏度请输入1:' ))
temper = float(input('请输入温度:' ))
if choose == 0 :
temper2 = (temper -32 )/1.8
print ('%.2f华氏度 = %.2f摄氏度' % (temper,temper2))
elif choose == 1 :
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的和
x = 0
for num in range (101 ):
x += num
print(x)
10. 求1到100偶数的和
x = 0
for num in range (101 ):
if num % 2 == 0 :
x += num
print(x)
11. 求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. 计算个人所得税
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)
print('个人所得税为:%d元' % personal)
15. 买鸡问题
'''
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. 捕鱼问题
fish = 1
while True :
total = fish
is_over = True
for _ in range (5 ):
if (total - 1 ) % 5 == 0 :
total = (total - 1 )
else :
is_over = False
break
if is_over:
print (fish)
break
fash += 1
17. 完美数问题
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 )