python中的分支语句和循环语句

Posted 眰恦ღ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的分支语句和循环语句相关的知识,希望对你有一定的参考价值。

先聊一个小话题,什么是bug?

原意为臭虫,在计算机领域,指 导致程序 不能正常执行,或者 执行结果不是预期的 错误. BUG是程序员在开发时非常常见的,初学者常见错误的原因包括:手误、对技术点理解不足、业务思路不熟练.

在学习语言时,不仅要学会语法,还要学会如何认识和解决错误的方法. 每一个程序员都必备的能力:编码能力和 解决错误能力.

IF分支语句

先看一个系统登录的案例:

# 请输入您的用户名
username = input('请输入您的用户名:')
# 请输入您的密码
password = input('请输入您的密码:')
# 打印欢迎信息
print('欢迎 %s 登录系统!' % username)

上面这个案例,无聊密码对与否,我们都会显示登录成功,这不符合正常逻辑,if就是让我们的代码有选择和判断

单个分支
if 条件一:
 执行一行或多行特定代码

如果条件成立则执行 if 下面的代码, 不成立则不会执行.

26a = 10

if a > 5:
 print('a > 5')
两个分支
if 条件一:
 执行一行或多行特定代码
elif 条件二:
 执行一行或多行特定代码

如果 if 条件成立, 则执行 if 下面的代码 如果 elif 条件成立, 则执行 elif 下面的代码 如果 if elif 条件同时成立, 则 执行第一个满足条件的分支

name = 'Obama'

if name == 'Obama':
 print('我是 Obama!')
elif name == 'Trump':
 print('我是 Trump!')
if 条件一:
 执行一行或多行特定代码
else:
 执行一行或多行特定代码

如果 if 条件成立, 则执行 if 下面的代码 如果 if 条件不成立, 则执行 else 下面的代码 ,if 和 else 代码必定会执行其中一个

name = 'Obama'

if name == 'Obama':
 print('我是 Obama!')
else:
 print('我是其他人!')

注意: else 后面不需要写条件

多个分支
if 条件一:
 执行一行或多行特定代码
elif 条件二:
 执行一行或多行特定代码
elif 条件三:
 执行一行或多行特定代码
elif 条件四:
 执行一行或多行特定代码

如果 if 条件成立, 则执行 if 下面的代码 如果 elif 条件成立, 则执行 elif 下面的代码;如果 if elif 条件同时成立, 则执行第一个满足条件的分支。

day = input('请输入1-7的数字:')
if day == '1':
 print('今天是星期一')
elif day == '2':
 print('今天是星期二')
elif day == '3':
 print('今天是星期三')
elif day == '4':
 print('今天是星期四')
elif day == '5':
 print('今天是星期五')
elif day == '6':
 print('今天是星期六')
elif day == '7':
 print('今天是星期日')

最后还可以加个else

if 条件一:
 执行一行或多行特定代码
elif 条件二:
 执行一行或多行特定代码
elif 条件三:
 执行一行或多行特定代码
elif 条件四:
 执行一行或多行特定代码
else:
 执行一行或多行特定代码

如果 if 条件成立, 则执行 if 下面的代码 如果 elif 条件成立, 则执行 elif 下面的代码;如果 if elif 都不满足条件, 则执行else 下面的代码。

if day == '1':
 print('今天是星期一')
elif day == '2':
 print('今天是星期二')
elif day == '3':
 print('今天是星期三')
elif day == '4':
 print('今天是星期四')
elif day == '5':
 print('今天是星期五')
elif day == '6':
 print('今天是星期六')
elif day == '7':
 print('今天是星期日')
else:
 print('无法确定星期几')
条件的成立与否如何表示的?

成立则表示结果为真(True), 不成立则表示结果为假(False).

分支条件判断的场景一般为: a大于b、a小于b、a等于b、a大于等于b、a小于等于b、a不等于b等等.

运算符描述
==两边相等,返回 True
!=两边不相等,返回 True
>左边大于右边,返回 True
<左边小于右边,返回 True
>=左边大于或者等于右边,返回 True
<=左边小于或者等于右边,返回 True

登录案例的代码可修改为:

# 请输入您的用户名
username = input('请输入您的用户名:')
# 请输入您的密码
password = input('请输入您的密码:')
# 判断密码是否正确
if username == 'admin':
 # 再判断密码是否合法
 if password == 'admin':
  # 打印欢迎信息
  print('欢迎 %s 登录系统!' % username)
 else:
  print('用户名或者密码不正确!')
else:
 print('用户名或者密码不正确')

编写if语句代码时,注意缩进

多个条件之间的关系

上面代码在 if 语句中又嵌套了一个 if 语句, 能否有更简单的写法呢?

我们可以将多个条件并列写在 if 后面, 此时需要表示多个条件之间的关系, 需要逻辑运算符!

运算符逻辑表达式描述
and(并且)x and yx和y都成立,才会返回 True
or (或)x or yx和y成立一个,就会返回True
not (取反)not x如果 x 为 True,返回 False;如果 x 为 False,返回 True
a = 10
b = 20
c = 30
d = 40
# and 两个条件都为真, 则结果为真
result = a > b and c < d
print('result:', result)  #false

# or 有一个条件为真, 则结果为真
result = a > b or c < d  
print('result:', result)  #true

# not 如果条件为真, 则结果就为假
result = not (a > b)
print('result:', result)  #true

我们继续修改登录代码为:

# 请输入您的用户名
username = input('请输入您的用户名:')
# 请输入您的密码
password = input('请输入您的密码:')
# 判断密码是否正确
if username == 'admin' and password == 'admin':
 # 打印欢迎信息
 print('欢迎 %s 登录系统!' % username)
else:
 print('用户名或者密码不正确')
猜拳案例
import random
user_quan = int(input('请出拳 石头(0)、剪刀(1)、布(2):'))
# 0-2产生一个随机数
computer_quan = random.randint(0, 2)
if (user_quan == 0 and computer_quan == 1) or \\
	(user_quan == 1 and computer_quan == 2) or \\
    (user_quan == 2 and computer_quan == 0):
 print('您赢了!')
elif user_quan == computer_quan:
 print('平局!')
else:
 print('您输了!')

while循环

我们的猜拳游戏只能玩一次, 然后就需要重新启动程序. 我们在玩游戏时, 并不会每次玩都需要重新启动程序.

从语法角度, 某些代码需要重复去执行. 如何解决部分代码重复执行的问题?

Python 提供了 while 循环语法用于支持特定代码重复执行.

while 条件:
 重复执行的一行或多行代码

Python 每次会判断 while 关键字后面的条件是否为真, 如果为真, 则执行 while 下面的一行或多行代码, 直到不满足条件, 循环执行结束.

注意: 如果条件永远满足, 则意味着循环永远会被执行, 叫做死循环, 这是无意义的.

计算1-100之间的累加和
i = 1
sum = 0

while i <= 100:
 sum = sum + i
 i += 1
 
print("1~100的累积和为:%d" % sum)
计算1-100之间所有的偶数累加和
i = 1
sum = 0
while i <= 100:
 if i % 2 == 0:
  sum = sum + i
 i+=1
print("1~100的累积和为:%d" % sum)
break和continue

我们下面实现一个需求, 用户输入名字, 并显示名字, 当输入 stop 时, 停止输入

name = ''
while name != 'stop':
 name = input('请输入一个名字(stop停止输入):')
 if name != 'stop':
  print(name)

我们可以在循环体内部使用 IF 语句配合 break 关键字来实现. 那么 break 是什么意思? 当循环体执行到 break 语句时就会马上退出循环

while True:
 name = input('请输入一个名字(stop停止输入):')
 if name == 'stop':
 	# 退出循环
 	break
 else:
 	print(name)

这么写的好处是什么呢?如果 while 条件比较简单的话, 我们可以将循环退出条件写到 while 后面, 但有时一个循环退出的条件比较复杂, 也就是有多个条件, 写到 while 后面会增加阅读理解难度. 我们可以将条件写到循环内部, 会更加容易理解.

现在新的需求来了, 我在做累加的时候, 希望碰到偶数的时候不累加. 那么该如何实现呢?

只需要让循环体的变量 i 等于偶数时,使用continue 跳过那一次循环, 并不退出循环,。

i = 1
sum = 0

while i < 100:
 if i % 2 == 0:
 	# 一定要加这一句, 否则会进入死循环
 	i += 1
 	# 如果 i 为偶数则跳过循环
 	continue
 sum = sum + i
 i += 1
print("1~100的奇数累积和为:%d" % sum)

以上是关于python中的分支语句和循环语句的主要内容,如果未能解决你的问题,请参考以下文章

兄弟连学Python(06)------- 条件语句和循环语句

python 分支语句 循环语句

条件分支和循环

Python基础——分支和循环

Python条件与循环

分支语句和循环语句