第三节学习内容
目录
1.控制结构
1).顺序结构
代码逐行执行(每行代码执行且执行一次)
2).选择结构(分支结构,判断结构)
通过条件判断决定哪些代码执行,哪些不执行。if---else,if---elif----else。
①if---else型 判断条件为真(True)的时候才执行冒号后下面的语句。比如现在我们判断密码输入正确,就执行进入个人中心的命名。
②if---elif----else型
# if在开头,只有一个,不可省略
# elif可以有任意个
# else只有末尾一个,可以省略
# elif多条件判断中,只执行第一个满足条件的语句
通过实例来展示:
大宝想要买车,于是他做了以下计划:
1.如果年底存款大于100万,买宝马!
2.如果年底存款大于50万,买丰田!
3.如果年底存款大于20万,买二手车!
4.否则,手里的自行车再修修!
def kongzhi():
money=70
if money >=100:
print(("恭喜你!可以买宝马了!"))
print("真开心!")
elif money>=50 and money<100:
print("恭喜你!可以买丰田了!")
elif money>=20 and money <50:
print("恭喜你!可以买二手了")
else:
print("还不够,手里的车再修修!")
print("程序结束!")
if __name__=='__main__':
kongzhi()
③多层嵌套
money=int(input("请输入存款金额(万)?"))
day=int(input("今天星期几(1-7)?"))
if money >= 100:
print(("恭喜你!可以买宝马了!"))
print("真开心!")
if day<=5:
print("周末去提车!")
else:
print("今天下午就去提车!")
elif money >= 50 and money < 100:
print("恭喜你!可以买丰田了!")
elif money >= 20 and money < 50:
print("恭喜你!可以买二手了")
else:
print("还不够,手里的车再修修!")
print("程序结束!")
注意事项:
#条件后的冒号不要掉
#else后面不要写条件
#缩进必须一致
案例测试(自检很简单):
为一家超市开发一个简易的收银系统(以3-5种商品为例):使用变量保存︰商品编号、商品价格、商品名字。 ( 商品价格严格一点都是小数,可以改为小数。)
1.提示用户输入商品编号和数量,然后显示总价多少钱。
2.提示用户输入付款金额,然后显示找零金额。
spbh01="1001"
spjg01=23.1
spmz01="苹果"
spbh02 = "1002"
spjg02 = 12
spmz02 = "香蕉"
spbh03 = "1003"
spjg03 = 33
spmz03 = "橙子"
money=0.0
name=""
input1=input("请用户输入商品编号:")
if input1==spbh01:
input2 = int (input("请用户输入商品数量:"))
money=float(input2*spjg01)
name=spmz01
elif input1==spbh02:
input2 = int (input("请用户输入商品数量:"))
money = float(input2 * spjg02)
name = spmz02
elif input1 == spbh03:
input2 = int (input("请用户输入商品数量:"))
money = float(input2 * spjg03)
name = spmz03
else:
print("没有此商品")
zhifu=float(input("用户支付钱:"))
sheng=float(zhifu-money)
if sheng>=0:
print("你购买的是{0}找零{1}块钱:".format(name,sheng))
else:
print("你购买的是{0}还需要付款{1}块钱:".format(name,(-1)*sheng))
小数产生的误差,所以引用round()函数。
3).循环结构
①认识循环
就是循环体中的数据,进行循环限定的次数。
for x in range(0,10): #循环10次
print("你好")
②for循环
格式:for 变量名 in 序列:
循环语句
for x in range(0,10): #循环10次
print("第{0}次打印".format(x),"你好") # x 是第几次
注意:range()函数 几种形式:1.range(开始值,结束值),2.range(开始值,结束值,步长)。
也可以不使用range()函数,可以是序列 ['a','b','c'] 。
for循环遍历容器:将容器中的数据一个一个获取出来。
直接遍历测试:
names=["张三","李四","王五","钱柳"]
for name in names: #将names列表赋值给name,之后打印出来。
if name=="王五":
print("有这个人",name)
针对于列表、元组、字典、集合set:(可以使用索引)
names=["张三","李四","王五","钱柳"]
for i in range(0,len(names)):
print(names[i])
total=0
scores=(86,87,78,90,76,99,100) #元组使用
for score in scores:
total=total+score
print(total)
#循环遍历字典,只获得键
dicta={ "name":"zhangsan","age": 18,"hobby" :"playball"}
for x in dicta:
print(x,dicta[x]) #通过键获得值
#集合的用法和元组差不多的
seta={1,23,4,5,6,4}
for x in seta:
print(x)
测试最大最小值:
#第一种方式求值,直接调用函数
scores=[23,46,68,89,90,34,89]
print(max(scores))
print(min(scores))
#第二种方式求值
scores=[23,46,68,89,90,34,89]
max1=scores[0]
min1=scores[0]
for x in scores:
if max1<x:
max1=x
if min1>x:
min1=x
print(max1)
print(min1)
③while循环
while循环表示通过判断条件来控制循环语句的执行。
在你确定循环条件而不确定循环次数时,那么while是最好的选择。
i=0
while i<10:
print("第",i,"年","还款1.2W")
i+=1
④嵌套循环
for year in range(1,11):
for month in range(1,13):
print("第{0}年,第{1}个月还款1k".format(year,month))
print("第",year,"年")
嵌套之遍历多维容器
lista=[1,2,3,4,5]
listb=[3,4,5,2,1]
listc=[16,74,3,2,1]
listx=[lista,listb,listc]
for x in listx:
for i in x:
print(i)
⑤循环练习1
解答1:
count=0
n=10
for x in range(1,n+1):
input1=int(input("用户输入第{0}个数据:".format(x)))
count+=input1
avg=float(round(count/n))
print(avg)
解答2:
high=884400.0
paper=0.08
count=0
while paper<=high:
paper=paper*2 #对折
count+=1 #对折次数
print(count)
解答3:
#穷举法,鸡 0-36,兔 35-鸡
for j in range(0,36):
t=35-j
if j*2+t*4==94:
print(j,t)
解答4:
for i in range(0,21):
for j in range(0,34):
z=100-5*i-3*j #凑百千
chu=z*3 #雏鸡个数
if j+i+chu==100 : #凑白只
print("公鸡:{0},母鸡:{1},雏鸡:{2}".format(i,j,chu))
4).break 和continue
break:结束整个循环操作
continue:结束本次循环,继续下次循环
#承接上一题,输出多个答案,我只输出一个答案,不要含有0只的,使用break与contiune。
flag=0
for i in range(0,21):
for j in range(0,34):
z=100-5*i-3*j #凑百千
chu=z*3 #雏鸡个数
if j+i+chu==100 : #凑白只
if i==0 or j==0 or chu==0:
continue
else:
flag+=1
if flag==1:
print("公鸡:{0},母鸡:{1},雏鸡:{2}".format(i,j,chu))
else:
break
5).无限循环
如果循环中的循环条件永远为真,且没有break关键字进行终止,那么就形成了一个无限循环.也被成为死循环。
2.round()函数
消除float型带来的误差,保留指定的小数位。 round(小数,个数)