Python集训营45天—Day03
1. 分支结构
1.1 初步介绍
至今,我们所写的Python代码都是顺序执行,但是有时候在代码中是需要进行逻辑判断的,比如用户 输入用户名和密码,输入正确则验证通过,否则即验证失败。这个时候就会产生两个分支,而且两个分支只会有一条分支会走下去。当然,还有很多类似的场景,我们将这种结果称为 "分支结构" 或 “选择结构”。
语法格式:
if xxx1:
事情1
elif xxx2:
事情2
elif xxx3:
事情3
else:
事情4
1.2 使用案例
1、用户身份验证
# -*- coding:utf-8 -*-
"""
用户身份验证
version: 0.1
author: coke
"""
username = input("请输入用户名:")
password = input("请输入密码:")
if username == 'admin' and password == '123456':
print("身份验证成功")
else:
print("身份验证失败")
输出结果

2、分段函数求值
"""
分段函数求值
3x - 5 (x > 1)
f(x) = x + 2 (-1 < x < 1)
5x + 3 (x <= -1)
version: 0.1
Author: coke
"""
x = float(input("请输入一个数字:"))
if x > 1:
y = 3 * x - 5
elif x > -1 and x < 1:
y = x + 2
else:
y = 5 * x +3
print("f(%.2f)=%.2f"%(x,y))
输出结果

1.3 练习
1、猜拳游戏
# -*- coding:utf-8 -*-
"""
猜拳游戏
version: 0.1
author: coke
"""
import random
num = int(input("剪刀(0) 石头(1) 布(2):"))
computer = random.randint(0,2)
print("电脑出拳:%d"%computer)
if (num == 0 and computer == 2) or (num == 1 and computer == 0) or (num == 2 and computer == 1):
print("哈哈,你赢了")
elif num == computer:
print("平局,要不要再来一局")
else:
print("洗洗手,决战都天亮")
2、成绩等级转换
"""
百分制成绩转等级制成绩
90分以上 --> A
80分~89分 --> B
70分~79分 --> C
60分~69分 --> D
60分以下 --> E
Version: 0.1
Author: coke
"""
score = float(input('请输入成绩: '))
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
elif score >= 70:
grade = 'C'
elif score >= 60:
grade = 'D'
else:
grade = 'E'
print('对应的等级是:', grade)
2.循环结构
1.1 初步介绍
如果在程序中我们将执行一系列的重复指令,比如我想计算1 - 100的和 或者 我想输出99次 helloWorld,难道要一个个去写么,如果真是这样,那么编程的工作就太不合理了,所以,我们还需要了解一下循环结构,如果我们学会了循环结构,就可以重复的执行某些操作指令。
在Python中构造循环结构有两种做法,一种是for-in循环,一种是while循环。
for - in 循环
如果我们可以知道循环的次数或者是对容器的迭代(容器后面会涉及),我们会推荐for-in循环
for 临时变量 in 列表或者字符串等:
循环满足条件时执行的代码
while 循环
如果要构造不知道具体循环次数的循环结构,我们推荐使用while循环。while循环通过一个能够产生或转换出bool值的表达式来控制循环,表达式的值为True循环继续,表达式的值为False循环结束。
while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
...(省略)...
break:结束当前循环
continue:用来结束本次循环,紧接着执行下一次的循环
注: break/continue只能用在循环中,除此以外不能单独使用
1.2 使用案例
1、用for循环 计算1-100 之间偶数的和
"""
用 for循环实现1-100之间的求和
version: 1.0
Author: coke
"""
#-*- coding=utf-8 -*-
sum = 0
for x in range(1,101):
if x % 2 == 0:
sum += x
print(sum)
输出结果

需要说明的是上面代码中的range类型,range可以用来产生一个不变的数值序列,而且这个序列通常都是用在循环中的,例如:
range(101)可以产生一个0到100的整数序列。range(1, 100)可以产生一个1到99的整数序列。range(1, 100, 2)可以产生一个1到99的奇数序列,其中的2是步长,即数值序列的增量
2、不用判断 计算 1-100 之间偶数的和
"""
用 for循环实现1-100之间的求和
version: 1.0
Author: coke
"""
#-*- coding=utf-8 -*-
sum = 0
for x in range(2,101,2):
sum += x
print(sum)
3、猜数字游戏
"""
猜数字游戏
计算机出一个 1~100之间的随机数由人猜
计算机分别根据人猜的数字分别给出提示大一点/小一点/猜对了
version: 0.1
admin: coke
"""
import random
answer = random.randint(1,100)
counter = 0
while True:
counter += 1
result = int(input("请输入一个数字:"))
if answer > result:
print("大一点")
elif answer < result:
print("小一点")
else:
print("猜对了")
break
if counter > 7:
print("智商余额不足")

4、continue和break 的使用
"""
continue的使用
version: 0.1
author: coke
"""
name = "cokehaha"
for x in name:
print("----")
if x == "k":
continue
if x == "a":
break
print(x)

1.3 练习
1、输入两个正整数,计算最大公约数和最小公倍数
"""
输入两个正整数计算最大公约数和最小公倍数
version: 0.1
author: coke
"""
x = int(input('x = '))
y = int(input('y = '))
if x > y:
x, y = y, x
for factor in range(x, 0, -1):
if x % factor == 0 and y % factor == 0:
print('%d和%d的最大公约数是%d' % (x, y, factor))
print('%d和%d的最小公倍数是%d' % (x, y, x * y // factor))
break
2、打印三角形图案
"""
打印各种三角形图案
*
**
***
****
*****
*
**
***
****
*****
*
***
*****
*******
*********
version: 0.1
author: coke
"""
row = int(input('请输入行数: '))
for i in range(row):
for _ in range(i + 1):
print('*', end='')
print()
for i in range(row):
for j in range(row):
if j < row - i - 1:
print(' ', end='')
else:
print('*', end='')
print()
for i in range(row):
for _ in range(row - i - 1):
print(' ', end='')
for _ in range(2 * i + 1):
print('*', end='')
print()
Python集训营45天—Day03的更多相关文章
- Python集训营45天—Day01
目录 1. Python简介 2. 第一个Python程序 3. 知识点梳理 序言:未来是数据的世界,而python 是一门可以高效简洁处理数据的语言,博主打算花45天左右完成python学习的从0到 ...
- Python集训营45天—Day02
目录 变量和运算符 1.1 初步介绍 1.2 使用案例 1.3 知识点梳理 1.4 练习 序言:这一章我们将学习变量以及常见的类型,我们将以案例和代码相结合的方式进行梳理,但是其中所有的案例和知识点 ...
- Python集训营45天—Day04 (函数)
目录 1. 函数介绍 2. 函数的参数 3. 模块与函数 4. 递归函数 5. 匿名函数 6. 多返回值 python 的学习已经进入到第四天,前面几章我们已经学会了基本的变量操作,以及分支结构和循环 ...
- Python集训营45天—Day07 (面向对象编程进阶)
目录 1. @property装饰器 2. 魔法方法 3. 类属性和实例属性 4.静态方法和类方法 5. 单继承和多继承 6. 多态 7. del 方法 序言:上个章节我们了解了面向对象的基础知识,这 ...
- Python集训营45天—Day08 (文件操作)
目录 1. 文件操作介绍 2. 文件的读写 2.1 文本文件 2.2 二进制文件 2.3 JSON文件 3. 文件的定位,重命名和删除 4. 文件夹的相关操作 1. 文件操作介绍 大家应该听说过一句话 ...
- 8.5 正睿暑期集训营 Day2
目录 2018.8.5 正睿暑期集训营 Day2 总结 A.占领地区(前缀和) B.配对(组合) C 导数卷积(NTT) 考试代码 T1 T2 T3 2018.8.5 正睿暑期集训营 Day2 时间: ...
- 8.4 正睿暑期集训营 Day1
目录 2018.8.4 正睿暑期集训营 Day1 A 数对子 B 逆序对 C 盖房子 考试代码 A B C 2018.8.4 正睿暑期集训营 Day1 时间:4.5h(实际) 期望得分:30+50+3 ...
- 8.10 正睿暑期集训营 Day7
目录 2018.8.10 正睿暑期集训营 Day7 总结 A 花园(思路) B 归来(Tarjan 拓扑) C 机场(凸函数 点分治) 考试代码 A B C 2018.8.10 正睿暑期集训营 Day ...
- 8.6 正睿暑期集训营 Day3
目录 2018.8.6 正睿暑期集训营 Day3 A 亵渎(DP) B 绕口令(KMP) C 最远点(LCT) 考试代码 A B C 2018.8.6 正睿暑期集训营 Day3 时间:5h(实际) 期 ...
随机推荐
- io流处理文件夹复制功能(java代码)
拷贝某个目录下得所有文件拷指定位置 思想归纳 首先我们需要做的先获取到资源文件夹路径,这里我们先在程序中写死,然后我们还需要一个目标文件夹就是你需要拷贝到哪里.有了这两个文件夹我就可以进行复制了 然后 ...
- Appium+python自动化(三十)- 实现代码与数据分离 - 数据配置-yaml(超详解)
简介 本篇文章主要介绍了python中yaml配置文件模块的使用让其完成数据和代码的分离,宏哥觉得挺不错的,于是就义无反顾地分享给大家,也给大家做个参考.一起跟随宏哥过来看看吧. 思考问题 前面我们配 ...
- Spring基础笔记
Spring带给了我们什么便利? 注解版本的IOC如何玩? 组件注册 组件注册的过程中有哪些过滤规则? 如何控制组件的作用域(单例多例)? 六种注册组件的方式? 生命周期 什么是bean的生命周期 在 ...
- nginx 使用HTTPS协议-SSL证书模块报错解决-附nginx安装 : [emerg] the "ssl" parameter requires ngx_http_ssl_module in nginx.c
Linux系统下ngnix使用HTTPS协议启动报错: nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_modul ...
- 以阿里IoT开发物联网和应用平台
1. 链接物联网的概念 物联网(The Internet of Things,简称IOT)是指通过 各种信息传感器.射频识别技术.全球定位系统.红外感应器.激光扫描器等各种装置与技术,实时采集任何需要 ...
- 还在用if else?策略模式了解一下!
在公司负责的就是订单取消业务,老系统中各种类型订单取消都是通过if else 判断不同的订单类型进行不同的逻辑.在经历老系统的折磨和产品需求的不断变更,决定进行一次大的重构:消灭 if else. 接 ...
- springboot + jedisCluster
如果使用的是redis2.x,在项目中使用客户端分片(Shard)机制. 如果使用的是redis3.x中的集群,在项目中使用jedisCluster. 1.项目结构 2.pom.xml 1 <? ...
- Java利用Apache poi导出图表
jar compile('org.apache.poi:poi:4.0.1') compile('org.apache.poi:poi-scratchpad:4.0.1') compile('org. ...
- VS code 进行 flutter 调试时启动后就停止,无法调试的问题
在编写flutter时,更新需要按 r 或着 R,这就有点麻烦,当然强大的VS code给我们提供了自动更新的功能,那就是调试功能. 首先需要给VS code安装Flutter与Dart插件. 在VS ...
- 【Java并发】线程的顺序执行
/** * 问题:有线程a.b.c,如何让它们顺序执行? * 方式一:可用Join()方法实现 * 方式二:可用newSingleThreadExecutor() * Created by Smile ...