python_分支循环
什么是分支+循环?
--不同条件进行不同逻辑处理 -- 分支
--满足条件进行反复相同逻辑处理 -- 循环
分支的形式?
-- if 条件:
执行体
else:
执行体
--if 条件1:
执行体1
#!/usr/bin/python3
def select_go(weather):
# 分析:假定天气为下雨,后面的都是假设,如果,就,else:后面不符合逻辑,嗯哼
if weather == 'rainy':
print('高兴的出去堆雪人,然后太冷了,又回来')
else:
print('天气和我有关系么')
if __name__ == '__main__':
weather = 'rainy'
select_go(weather)
elif 条件n:
执行体n
else:
执行体
#!/usr/bin/python3
def select_go(weather):
# 分析:假定天气为下雨,后面的都是假设,如果,就,else:后面不符合逻辑,嗯哼
if weather == 'snowy':
print('高兴的出去堆雪人,各种浪')
elif weather == 'sunny':
print('可以去公园玩,散步')
elif weather == 'windy':
print('只得呆着家里了')
else:
print('嗯哼,我就是要出去,我不管,我不管')
if __name__ == '__main__':
weather = 'rainy'
select_go(weather)
什么是三元运符?
--result = 值1 if 条件 esle 值2
-- 满足条件 result =值1 不满足条件 result =值2
#!/usr/bin/python3 result = '2b' if 2 == 2 else '4b' print(result) result = '2b' if 2 == 4 else '4b' print(result)
循环的形式?
--while条件:
循环体
#!/usr/bin/python3
def sum_go(sum_to):
count = 0
sum_all = 0
while True:
sum_all += count # 进行累加
if count == sum_to: # 判断是否满足边界条件
break
count += 1 # 计数累加
print(sum_to, count)
return sum_all
if __name__ == '__main__':
sum_to = 100 # 累加到100
result = sum_go(sum_to)
print(result)
--for i in可迭代对象 -- range()\list\dict\str\
循环体
#!/usr/bin/python3
def sum_go(sum_to):
sum_all = 0
for i in range(sum_to+1):
sum_all += i
return sum_all
def bian_li(list_1, dict_1):
# 遍历列表
for l in list_1:
print(l)
# 遍历字典
for d in dict_1:
print(d) # 遍历字典key
print(dict_1[d], '\n') # 通过key遍历字典value
if __name__ == '__main__':
sum_all = sum_go(sum_to=100)
print(sum_all)
list_1 = [1, 2, 3, 4, 5, [6, 7], 8]
dict_1 = {'name': '北门吹雪', 'age': 18, 'work': 'student'}
bian_li(list_1, dict_1)
--循环中有两个跳出方法
-continue --当前一次循环
-break --当前整个循环
思考?能跳出循环么?
#!/usr/bin/python3
def learn(now_time, star_time, end_time):
if star_time == now_time:
while True:
print('学习ing........................',star_time)
star_time += 0.1
if star_time == end_time:
break
print('还在学习ing........................')
if __name__ == '__main__':
now_time = 9
star_time = 9
end_time = 11
learn(now_time, star_time, end_time)
结果很奇怪?
学习ing........................ 9
还在学习ing........................
学习ing........................ 9.1
还在学习ing........................
学习ing........................ 9.2
还在学习ing........................
学习ing........................ 9.299999999999999
............
并没有跳出循环
-- 注意小数带来的坑?
-- 小数带来的坑,小数并不精准,默认在某个范围内是正确的,
所以计算计算的时候,最好最优用整数(可以换算成整数),或者进行多次精确值比较,不然会出现莫名其妙的bug
解决方法:
2个小数的学习,需要循环1200次,所以以1200次为限制,递加为整数1(递加是每次循环都在上一次的基础上加1)
-- 如下:
#!/usr/bin/python3
import time
def learn(now_time, star_time, end_time):
intervals = (end_time - star_time)*60*60
count = 0
if star_time == now_time:
while True:
print('学习ing........................', star_time)
print('已经学习了 %s 分钟' % (count//60))
time.sleep(1)
count += 1
if count == intervals:
print('可以结束学习了,吃饭了')
break
elif count % 3600 == 0:
star_time += 1
if __name__ == '__main__':
now_time = 9
star_time = 9
end_time = 11
learn(now_time, star_time, end_time)
什么是逻辑运算符?
--进行真假判断,真为True 1 ,假为 False 0,联合 分支+循环 使用
-- > < == <= >= != --大于、小于、等于、小于等于、大于等于、不等于
-- “and” “or” “not“ ”is” “is not” ”in” “not in” --与、或、非、是、不是、在、不在
#登录验证小程序
user_ku = [['name1', 'psw1'], ['name2', 'psw2']] # 用户验证密码库
lock_list = [] # 锁定用户库,3次登录失败进入的小黑屋
canzhao = [] # 登录失败的录入,如果用count数出3次,进入锁定
while True:
name = input('输入你的用户名:')
psw = input('请输入你的密码:')
if name in lock_list: # 判断用户是否进入小黑屋
print('此账号锁定,不能再用此账号登陆')
continue
if [name,psw] in user_ku: # 判断用户输入的合法性
print('登录成功')
print('欢迎')
break
else:
canzhao.append(name) # 用户名录入
print('账号或者密码输入错误,请重新输入')
if canzhao.count(name) == 3: # 同用户3次登录失败进入的小黑屋
lock_list.append(name) # 进入小黑屋
-- “in”“ not in” 是判断元素是否在列表和字典中的有效方法
如何实现一个多级菜单,可以退出和返回上一级?
# 多级菜单循环以及返回和退出
dic1 = {'湖南':
{'衡阳':
{'珠晖区':'湖南工学院'},
'湘潭':
{'晖晖':'啦啦'}},
'北京':
{'朝阳':
{"德玛:北京大学"}}}
print('按q返回上一层')
print('按e退出')
ec = 'q' # 返回上一级
ex = 'e'
ex_while = True # 退出程序
for i in dic1: # 打印一级菜单
print(i)
while True: # 进入一级菜单选择
choice1 = input('请输入1>>>:')
if choice1 in dic1: # 判断是否在字典中
for i1 in dic1[choice1]:
print(i1) # 打印值
while True:
choice2 = input('请输入2>>>:') # 进入二级菜单选择
if choice2 in dic1[choice1]:
for i2 in dic1[choice1][choice2]:
print(i2)
while True:
choice3 = input('请输入3>>>:') # 进入三级菜单选择
if choice3 in dic1[choice1][choice2]:
for i3 in dic1[choice1][choice2][choice3]:
print(i3)
elif choice3 == ec: # 返回判断
for i2 in dic1[choice1][choice2]:
print(i2) # 打印上一级菜单
break
elif choice3 == ex: # 退出判断
exit('退出中……ing') # 退出整个程序
else:
print('输入错误,请重新输入,么么哒')
elif choice2 == ec: # 返回判断,并打印上一级菜单
for i1 in dic1[choice1]:
print(i1)
break
elif choice2 == ex: # 退出判断
exit('退出中……ing')
else:
print('输入错误,请重新输入,么么哒')
elif choice1 == ec: # 返回判断
print('已经最顶级菜单,完全退出请输入 e ')
continue
elif choice1 == ex: # 退出判断
exit('退出中……ing')
else:
print('输入错误,请重新输入,么么哒')
python_分支循环的更多相关文章
- 第十九节:Java基本数据类型,循环结构与分支循环
基本数据类型 Java中的基本数据类型,有8种,在Java中有四种类型,8种基本数据类型. 字节 boolean 布尔型为1/8 byte 字节类型为1 short 短整型为2 char 字符型为2 ...
- 第三次实验计算分段函数 第四次计算分段函数和循环NEW 第五次分支+循环加强版 实验报告
一.实验题目,设计思路,实现方法 第四次分支+循环 加强版 (2-2计算个人所得税,2-7 装睡,2-8计算天数) 设计思路:2-2 用if-else的语句,与计算分段函数的题类似的做法:2-7 运用 ...
- java基础二 分支循环
分支循环: if... if...else... if...else if... if...else if...else... switch...case...defau ...
- Vue 分支循环
分支循环 在Vue中,分支循环也是使用标签属性指令完成的,这一点与后端模板语法不太相同. v-for 下面是通过v-for进行循环,不光可以拿到元素本身,也可以拿到索引值. 如果数据是对象类型,则可以 ...
- Swift学习(三)类型推导&基本运算&分支&循环
一.Swift中类型推导&基本运算 Swift中类型推导 如果一个标识符在定义时有直接赋值,那么可以根据后面赋值的类型,来推导出前面标识符的类型,这样前面标识符的(:类型)可以省略 查看标识符 ...
- python 分支 循环
一 python 知识点 1.变量(标签): a(变量名) = '字符串'or 数字 (整形和浮点型) a相当于变量名的标签 如: a = ...
- 分支&循环
分支 单分支 if 条件: 满足条件后要执行的代码 双分支 if 条件: 满足条件执行代码 else: if条件不满足就走这段 多分支: if 条件: 满足条件执行代码 elif 条件: 上面的条件不 ...
- python的分支循环
知识内容: 1.if-else分支结构 2.while循环 3.for循环 4.循环结构综述 5.break和continue语句 一.if-else分支结构 1.单分支选择结构 if 表达式: 语句 ...
- Oracle数据库之SQL基础和分支循环
一.SQL基础语言 DECLARE --声明 a ); --变量或对象 BEGIN a:='小明';-- := 表示给一个变量赋值 dbms_output.put_line(a); --输出用 dbm ...
随机推荐
- [Spark内核] 第31课:Spark资源调度分配内幕天机彻底解密:Driver在Cluster模式下的启动、两种不同的资源调度方式源码彻底解析、资源调度内幕总结
本課主題 Master 资源调度的源码鉴赏 [引言部份:你希望读者看完这篇博客后有那些启发.学到什么样的知识点] 更新中...... 资源调度管理 任务调度与资源是通过 DAGScheduler.Ta ...
- 【转】Python 爬虫的工具列表【预】
这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络 ...
- 编码与模式------《Designing Data-Intensive Applications》读书笔记5
进入到第四章了,本篇主要聊的点是编码(也就是序列化)与代码升级的一些场景,来梳理存储之中涉及到的编解码的流程.目前主流的编解码便是来自Apache的Avro,来自Facebook的Thrift与Goo ...
- 深入理解JVM(五)——垃圾回收器
轻松学习JVM(五)——垃圾回收器 上一篇我们介绍了常见的垃圾回收算法,不同的算法各有各的优缺点,在JVM中并不是单纯的使用某一种算法进行垃圾回收,而是将不同的垃圾回收算法包装在不同的垃圾回收器当中, ...
- 使用GPA针对android应用的绘制分析
使用GPA针对android应用的绘制分析 以前经常用GPA来perf端游的绘制,很多perf工具例如perfhud,pix对于加壳的程序总是束手无策,但是GPA却不受这个限制,可以自动HOOK 3D ...
- 【Java】Java中BigDecimal的基本运算
BigDecimal一共有4个够造方法,让来看看其中比较常用的两种用法: 第一种:BigDecimal(double val)Translates a double into a BigDecimal ...
- 1492: [NOI2007]货币兑换Cash
Description 小Y最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A纪念券(以下简称A券)和 B纪念券(以下 简称B券).每个持有金券的顾客都有一个自己的帐户.金券的数目可以是一个 ...
- Codeforces 626A Robot Sequence(模拟)
A. Robot Sequence time limit per test:2 seconds memory limit per test:256 megabytes input:standard i ...
- BZOJ2001: [Hnoi2010]City 城市建设
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2001 cdq分治+重建图. 可以保留当前一定会被选的非修改边然后把点缩起来.这样的话每次点数至 ...
- POJ 2531 暴力深搜
Network Saboteur Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13494 Accepted: 6543 ...