先聊一个小话题,什么是bug?
原意为臭虫,在计算机领域,指 导致程序 不能正常执行,或者 执行结果不是预期的 错误. BUG是程序员在开发时非常常见的,初学者常见错误的原因包括:手误、对技术点理解不足、业务思路不熟练.
在学习语言时,不仅要学会语法,还要学会如何认识和解决错误的方法. 每一个程序员都必备的能力:编码能力和 解决错误能力.
先看一个系统登录的案例:
# 请输入您的用户名
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 y | x和y都成立,才会返回 True |
or (或) | x or y | x和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('您输了!')
我们的猜拳游戏只能玩一次, 然后就需要重新启动程序. 我们在玩游戏时, 并不会每次玩都需要重新启动程序.
从语法角度, 某些代码需要重复去执行. 如何解决部分代码重复执行的问题?
Python 提供了 while 循环语法用于支持特定代码重复执行.
while 条件:
重复执行的一行或多行代码
Python 每次会判断 while 关键字后面的条件是否为真, 如果为真, 则执行 while 下面的一行或多行代码, 直到不满足条件, 循环执行结束.
注意: 如果条件永远满足, 则意味着循环永远会被执行, 叫做死循环, 这是无意义的.
i = 1
sum = 0
while i <= 100:
sum = sum + i
i += 1
print("1~100的累积和为:%d" % sum)
i = 1
sum = 0
while i <= 100:
if i % 2 == 0:
sum = sum + i
i+=1
print("1~100的累积和为:%d" % sum)
我们下面实现一个需求, 用户输入名字, 并显示名字, 当输入 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)