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的更多相关文章

  1. Python集训营45天—Day01

    目录 1. Python简介 2. 第一个Python程序 3. 知识点梳理 序言:未来是数据的世界,而python 是一门可以高效简洁处理数据的语言,博主打算花45天左右完成python学习的从0到 ...

  2. Python集训营45天—Day02

    目录 变量和运算符 1.1 初步介绍 1.2 使用案例 1.3 知识点梳理 1.4 练习 序言:这一章我们将学习变量以及常见的类型,我们将以案例和代码相结合的方式进行梳理,但是其中所有的案例和知识点 ...

  3. Python集训营45天—Day04 (函数)

    目录 1. 函数介绍 2. 函数的参数 3. 模块与函数 4. 递归函数 5. 匿名函数 6. 多返回值 python 的学习已经进入到第四天,前面几章我们已经学会了基本的变量操作,以及分支结构和循环 ...

  4. Python集训营45天—Day07 (面向对象编程进阶)

    目录 1. @property装饰器 2. 魔法方法 3. 类属性和实例属性 4.静态方法和类方法 5. 单继承和多继承 6. 多态 7. del 方法 序言:上个章节我们了解了面向对象的基础知识,这 ...

  5. Python集训营45天—Day08 (文件操作)

    目录 1. 文件操作介绍 2. 文件的读写 2.1 文本文件 2.2 二进制文件 2.3 JSON文件 3. 文件的定位,重命名和删除 4. 文件夹的相关操作 1. 文件操作介绍 大家应该听说过一句话 ...

  6. 8.5 正睿暑期集训营 Day2

    目录 2018.8.5 正睿暑期集训营 Day2 总结 A.占领地区(前缀和) B.配对(组合) C 导数卷积(NTT) 考试代码 T1 T2 T3 2018.8.5 正睿暑期集训营 Day2 时间: ...

  7. 8.4 正睿暑期集训营 Day1

    目录 2018.8.4 正睿暑期集训营 Day1 A 数对子 B 逆序对 C 盖房子 考试代码 A B C 2018.8.4 正睿暑期集训营 Day1 时间:4.5h(实际) 期望得分:30+50+3 ...

  8. 8.10 正睿暑期集训营 Day7

    目录 2018.8.10 正睿暑期集训营 Day7 总结 A 花园(思路) B 归来(Tarjan 拓扑) C 机场(凸函数 点分治) 考试代码 A B C 2018.8.10 正睿暑期集训营 Day ...

  9. 8.6 正睿暑期集训营 Day3

    目录 2018.8.6 正睿暑期集训营 Day3 A 亵渎(DP) B 绕口令(KMP) C 最远点(LCT) 考试代码 A B C 2018.8.6 正睿暑期集训营 Day3 时间:5h(实际) 期 ...

随机推荐

  1. 使用ArrayPool池化大型数组(翻译)

    原文链接:https://adamsitnik.com/Array-Pool/ 使用ArrayPool 简介 .NET的垃圾收集器(GC)实现了许多性能优化,其中之一就是,设定年轻的对象很快消亡,然而 ...

  2. 《机器学习技法》---GBDT

    1 对决策树使用adaboost 对决策树使用adaboost时,有以下几个问题: (1)adaboost每次更新的样本权重如何应用到决策树中? 由于我们不知道决策树的err目标是什么,因此通常的方法 ...

  3. vue生成element左侧菜单

    首先来总结element ui 官方文档的左侧菜单结构,带有el-submenu为子级节点,el-menu-item表示没有下级.当然,菜单不能写死,因为菜单也许不止两级,所以我们需要递归来实现.根据 ...

  4. 【程序人生】从湖北省最早的四位java高级工程师之一到出家为僧所引发的深思

           从我刚上大学接触程序员这个职业开始,到如今我从事了七年多程序员,这期间我和我的不少小伙伴接受了太多的负面信息,在成长的道路上也真了交了不少的情商税.这些负面信息中,有一件就是我大学班主任 ...

  5. python学习之路(3)---列表

    列表定义: 列表就是一个数据的集合,列表是可以重复的,可以对存储的数据进行增删改查, 列表的写法: list_name = ['ljwang','wangwu'] 列表的嵌套 a = ['1',['2 ...

  6. python+Selenium-字符运行报错问题

    最近开始接触自动化测试,在写一个简单的查询脚本时,遇到编码无法识别的问题 SyntaxError: Non-ASCII character '\xe5' in file F:/soft_Test/py ...

  7. 渗透之路基础 -- SQL注入

    目录 mysql注入(上) limit 有两个参数 limit 2,3 表示从2开始查3条 通过MySql内置数据库获取表名 通过MySql内置数据库获取表名对应的列名 mysql注入(中) SQL常 ...

  8. 监听input实时输入

    // 用Jquery实现: $('#input-element').on('input',()=>{ console.log("你按了一下111");}) // 用Jquer ...

  9. ElasticSearch:组合查询或复合查询

    Bool查询 允许在单独的查询中组合任意数量的查询,指定的查询语句表名哪些部分是必须匹配(must).应该匹配(should)或不能匹配(must_not) Bool过滤器 和查询功能一致,但是同等情 ...

  10. springBoot日志框架自动配置与原理

    1.日志框架 小张:开发一个大型系统: ​ 1.System.out.println(""):将关键数据打印在控制台:去掉?写在一个文件? ​ 2.框架来记录系统的一些运行时信息: ...