您的位置:首页 > 编程语言 > Python开发

2. Python基础

2019-07-03 16:41 1596 查看

流程控制

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
[/code]

例子:

# 判断年龄是否满18岁,若满足,请输出提示语句
# 1. 定义一个变量
age = 20
# 2. 判断是否满18岁
if age >= 18:
# 3. 如果你满18岁,可以进入网吧
print("欢迎进入网吧")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
[/code]

*注意:*这里的判断条件应使用比较运算符 >=,(提问比较运算符都有什么)

在使用 if 判断时,只能做到满足条件时要做的事情,那如果需要在不满足条件的时候,该做某些事情,我们该如何做呢

这时就需要用到if…else…语句

if…else…语句:

if 判断条件:
执行语句……else:
执行语句……
  • 1
  • 2
  • 3
  • 4
[/code]

注意:

  • 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
[/code]

在开发中,使用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
[/code]
# -*- 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
[/code]

例子:

# 循环字符串
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
[/code]

while循环

  1. while循环的一般格式如下:
起点
while 表达式(bool)/终点:
循环体
步长
  • 1
  • 2
  • 3
  • 4
[/code]
# 使用 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

  1. 无限循环:通过设置条件表达式永远不为 false 来实现无限循环
var = 1
while var == 1 :  # 表达式永远为 true
num = int(input("输入一个数字  :"))
print ("你输入的数字是: ", num)

print (“Good bye!”)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. 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
[/code]

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
[/code]

练习题

  • 盈盈为了考验令狐冲夺冠的决心,要他说一百遍“我能行!”
  • 本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。
    计算5年后,获得的本金是多少?(用float存储)
  • 计算出1—100之间所有能被3整除的整数的和?
  • 计算1000以内所有不能被7整除的整数之和?
  • 1+2+3+…+100 = ?
  • 找出一个数的所有因子数
  1. 定义一个正整数如:1205 统计它的各位数字中零的个数,并求各位数字中的最大者。
  2. 有1020个西瓜,第一天卖掉总数的一半后又多卖出两个,以后每天卖剩下的一半多两个,
    问几天以后能卖完
  3. 猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,
    第二天早上又将剩下的桃子吃了一半,又多吃一个,以后每天都吃了前一天剩下的一半零一个。
    到第10天早上想再吃时,见只剩下一个桃子。求第一天共摘了多少个?
  4. 循环录入某学生5门课的成绩并计算平均分,如果某分数录入为负,
    停止录入并提示录入错误(使用break)
  • 循环录入Java课的学生成绩,统计分数大于等于 80分的学生比例(使用continue)
  1. 用while做鸡兔同笼。鸡兔一共有50只,脚一共有160只,问鸡和兔各多少只?
    要求鸡兔至少一样一只。
  • 计算2 / 1 + 3 / 2 + 4 / 3 +…+(n + 1) / n,写出算法的程序.
  1. 有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。
    已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。
    假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对?
    分析:兔子的规律为数列,1,1,2,3,5,8,13,21
  • 从控制台输入一个正整数,并进行反转输出
</div>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: