2. Python基础
流程控制
1. 选择语句
选择语句也可以称为判断语句
在我们丰富多彩的生活中,我们要做出各种各样的选择:如果…,那么…
这种判断几乎无处不在,那么什么是判断语句呢?
判断的定义:
如果条件满足,才能做某件事
如果条件不满足,就做另外一件事情,或者什么也不做
最开始的程序只能从上到下的‘呆板’执行,正是有了判断,才使得程序充满变化
可以通过下图来简单了解语句的执行过程:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019061214335142.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1cGVyR2lybE5vMQ==,size_16,color_FFFFFF,t_70)
在python编程语言中,没有case语句,只有if语句。而if语句又有三种形式:
(1) if语句
(2) if…else…语句
(3) if…elif…else语句
if 语句:
if 判断条件: 执行语句……
- 1
- 2
例子:
# 判断年龄是否满18岁,若满足,请输出提示语句 # 1. 定义一个变量 age = 20 # 2. 判断是否满18岁 if age >= 18: # 3. 如果你满18岁,可以进入网吧 print("欢迎进入网吧")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
*注意:*这里的判断条件应使用比较运算符 >=,(提问比较运算符都有什么)
在使用 if 判断时,只能做到满足条件时要做的事情,那如果需要在不满足条件的时候,该做某些事情,我们该如何做呢
这时就需要用到if…else…语句
if…else…语句:
if 判断条件: 执行语句……else: 执行语句……
- 1
- 2
- 3
- 4
注意:
- else必须配合if使用,而其 else 后不跟条件,else总与离它最近的if进行匹配。
- if和else语句以及各自的缩进部分是一个完整的代码块
例子:
# 判断年龄是否满 18 岁,如果满 18 岁,允许进入网吧,如果未满 18 岁,提示回家写作业 # 1. 定义一个变量 age = 13 # 2. 判断是否满18岁 if age >= 18: # 3. 如果你满18岁,可以进入网吧 print("欢迎进入网吧") else: print("未满 18 岁, 回家写作业")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
在开发中,使用if可以判断条件,使用else可以处理条件不成立的情况
但是,如果希望再增加一些不同条件,需要执行的代码也不同,
由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现
if…elif…else…语句
if 判断条件1: 执行语句1…… elif 判断条件2: 执行语句2…… elif 判断条件3: 执行语句3…… else: 执行语句4……
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
# -*- coding: UTF-8 -*-# 例2:elif用法
num = 5
if num 3: # 判断num的值
print (‘boss’)
elif num 2:
print (‘user’)
elif num == 1:
print (‘worker’)
elif num < 0: # 值小于零时输出
print (‘error’)
else:
print (‘roadman’) # 条件均不成立时输出
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
*注意:*elif 和 else 都必须和 if 联合使用,而不能单独使用,可以将 if,elif 和 else 以及各自缩进的代码,看成一个完整的代码块。
在if判断语句中,除了使用比较运算符进行判断,有时还会用到逻辑运算符:与(and),或(or),非(not)
如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
# -*- coding: UTF-8 -*-
# 例3:if语句多个条件
# num = int(input(“输入您需要判断的数字”)) 手动输入需要判断数字
# and 与
# 判断值是否在0~10之间
num = 9
if num >= 0 and num <= 10:
print (‘hello’)
# 输出结果: hello
# or 或
# 判断值是否在小于0或大于10
num = 10
if num < 0 or num > 10:
print (‘hello’)
else:
print (‘undefine’)
# 输出结果: undefine
# not 非 对一个条件取反
# 定义一个布尔变量,判断是否是本公司职员
is_employee = True
if not is_employee:
print(“非本公司职员”)
num = 8
# 判断值是否在05或者1015之间
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):
print (‘hello’)
else:
print (‘undefine’)
# 输出结果: undefine
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
*注意:*当if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and 和 or 的优先级低于>(大于)、<(小于)等判断符号,即:逻辑运算优先级低于条件运算
-
综合应用
石头剪刀布
import random
# 从控制台输入要出的拳:1、石头 2、剪刀 3、布
player = int(input(“请输入您要出的拳头:”))
computer = random.randint(1,3)
print(“玩家的选择是%d, 电脑的选择是%d”%(player, computer))
if (player 1 and computer 2) or
(player 2 and computer 3) or
(player 3 and computer 1):
print(“恭喜玩家获胜”)
elif player == computer:
print(“无胜负,平局~”)
else:
print(“电脑获胜”)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
练习题
- 输入一个数,判断它是否能被3或5或7整除
- 打印某年某月有多少天。
- 做学院评奖系统,
1)如果数学成绩大于80分并且语文成绩大于80分,获奖学金500元。
2)如果数学小于30并且语文小于30分,输出重修。 - 输入三个数,如果其中有一个值大于1000,则提示,输入的数值有大于1000的。
- 定义一个字符,判断是否为字母。
- 定义一个整数,计算其平方值和立方值。
- 定义一个大 写字母,把它转换为小写字母后显示出来。
- 一位学生参加了三门不同科目的考试,计算并显示所得的总分和平均分同时显示单科所得分数。
- 定义三个数a=10,b=20,c=30 a+=10;b-=4; c%=2; 输出a b c 的结果
- 定义三个数,求出其中的最大值
- 某超市为了促销,规定:购物不足50元的按原价付款,超过50不足100的按九折付款,
超过100元的,超过部分按八折付款。编一程序完成超市的自动计费的工作。
答案 1
a = int(input("一个数:")) if a % 3 == 0: print("被3整除了") elif a % 5 == 0: print("被3整除了") elif a % 7 == 0: print("被3整除了")
a = int(input(“一个数:”))
if a % 3 0 or a % 5 0 or a % 7 == 0:
print(“可以整除了”)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
答案2
测试
-
标识符命名规则
-
定义变量 a = 100 计算 a **= 2 的值
-
输入一个大写字母,把它转换为小写字母后显示出来。
-
小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:低于18.5:过轻 ,18.5-25:正常 ,25-28:过重 ,28-32:肥胖 ,高于32:严重肥胖
-
有两个2到99之间的整数,a知道这两个数的和,b知道这两个数的积。
第一句:a对b说:我不知道这两个数是多少,但我确信你也不知道。第二句:b说:我知道了。
第三句:a说:我也知道了。
2. 循环语句
当我们需要执行一个语句或者语句组多次,不可能将同样的语句写多遍,一是比较繁琐, 二是不利于维护,这时候循环语句就应运而生。其中循环语句又分for循环和while循环,循环语句执行流程如下图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190612143436776.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1cGVyR2lybE5vMQ==,size_16,color_FFFFFF,t_70)
for循环
for循环的一般格式如下:
for 变量 in 序列: 循环体
- 1
- 2
例子:
# 循环字符串 name = "zhangsan" for word in name: print(word)
# 循环列表
name_list = [‘张三’, ‘李四’, ‘王五’]
for name in name_list:
print(name)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
range()函数:如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列,例如:
# 基础循环 for i in range(5): print(i)
# 使用range指定区间的值
for i in range(5,9
8000
):
print(i)
# 使range以指定不同的增量(可以为负数,又称步长)
for i in range(0, 10, 3):
print(i)
# 注意:0为起始值,10为终止值,3为步长。隐藏代码:i<终止值
# 还可以使用range()函数来创建一个列表
print(list(range(5)))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
用*画三角形:
* ** *** **** *****
for i in range(5):
for j in range(i+1):
print("*",end="")
print()
**
**
*
for i in range(5):
for j in range(5-i):
print("*",end="")
print()
<span class="token operator">*</span>
for i in range(5):
for j in range(4 - i):
print(" “,end=”")
for j in range(i+1):
print("*",end="")
print()
**
**
*
for i in range(5):
for j in range(5 - i):
print("*",end="")
for j in range(i+1):
print(" “,end=”")
print()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
九九乘法表:
for i in range(1,10): for j in range(1,i+1): print(j, "*", i, "=", j*i, end=" ") print()
- 1
- 2
- 3
- 4
while循环
- while循环的一般格式如下:
起点 while 表达式(bool)/终点: 循环体 步长
- 1
- 2
- 3
- 4
# 使用 while 来计算 1 到 100 的总和 n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print(“1 到 %d 之和为: %d” % (n,sum))
>> 1 到 100 之和为: 5050
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
*注意:*在python中没有do…while
- 无限循环:通过设置条件表达式永远不为 false 来实现无限循环
var = 1 while var == 1 : # 表达式永远为 true num = int(input("输入一个数字 :")) print ("你输入的数字是: ", num)
print (“Good bye!”)
- 1
- 2
- 3
- 4
- 5
- 6
- while循环使用else语句: 在 while … else 在条件语句为 false 时执行 else 的语句块
count = 0 while count < 5: print (count, " 小于 5") count = count + 1 else: print (count, " 大于或等于 5")
- 1
- 2
- 3
- 4
- 5
- 6
break
break 语句可以跳出 for 和 while 的循环体
# 第一个实例 for letter in 'Runoob': if letter == 'b': break print ('当前字母为 :', letter)
# 第二个实例
var = 10
while var > 0:
print (‘当期变量值为 :’, var)
var = var -1
if var == 5:
break
print (“Good bye!”)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
continue
continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
# 第一个实例 for letter in 'Runoob': if letter == 'o': # 字母为 o 时跳过输出 continue print ('当前字母 :', letter)
# 第二个实例
var = 10
while var > 0:
var = var -1
if var == 5: # 变量为 5 时跳过输出
continue
print (‘当前变量值 :’, var)
print (“Good bye!”)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
else
循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被break终止时不执行
# 质数:在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数 for n in range(2, 10): for x in range(2, n): if n % x == 0: print(n, '等于', x, '*', n//x) break else: # 循环中没有找到元素 print(n, ' 是质数')
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
练习题
- 盈盈为了考验令狐冲夺冠的决心,要他说一百遍“我能行!”
- 本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。
计算5年后,获得的本金是多少?(用float存储) - 计算出1—100之间所有能被3整除的整数的和?
- 计算1000以内所有不能被7整除的整数之和?
- 1+2+3+…+100 = ?
- 找出一个数的所有因子数
- 定义一个正整数如:1205 统计它的各位数字中零的个数,并求各位数字中的最大者。
- 有1020个西瓜,第一天卖掉总数的一半后又多卖出两个,以后每天卖剩下的一半多两个,
问几天以后能卖完 - 猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,
第二天早上又将剩下的桃子吃了一半,又多吃一个,以后每天都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子。求第一天共摘了多少个? - 循环录入某学生5门课的成绩并计算平均分,如果某分数录入为负,
停止录入并提示录入错误(使用break)
- 循环录入Java课的学生成绩,统计分数大于等于 80分的学生比例(使用continue)
- 用while做鸡兔同笼。鸡兔一共有50只,脚一共有160只,问鸡和兔各多少只?
要求鸡兔至少一样一只。
- 计算2 / 1 + 3 / 2 + 4 / 3 +…+(n + 1) / n,写出算法的程序.
- 有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。
已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。
假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对?
分析:兔子的规律为数列,1,1,2,3,5,8,13,21
- 从控制台输入一个正整数,并进行反转输出
</div>
- Python基础08 面向对象的基本概念
- Python列表基础
- python基础之dict和set
- python基础
- Anaconda还可以在python3.5的基础上创建一个新的独立的python2.7的环境
- Python基础(4) - 变量
- 【python】基础
- Python学习笔记19:服务器基础
- Python基础教程——1基础知识
- Python基础课程第一课
- python基础6
- Python黑帽编程3.0 第三章 网络接口层攻击基础知识
- Python基础
- 第七篇:python基础
- python基础之模块之sys模块
- python语言基础之基本数据类型及其运算(2)
- python基础教程(十二)
- python基础之内置模块(二)
- 【Python基础】10、MySQLdb模块和python网络编程
- python基础---高阶函数