Python 条件控制,条件控制其实就是 if…else
的使用。先来看下条件控制的基本结构:
用一句话概括 if…else 结构的作用:如果…条件是成立的,就做…;反之,就做…
所谓条件(condition)指的是成立的条件,即是返回值为 True 的布尔表达式。知道了这点后使用起来应该不难。
我们结合函数的概念来创建这样一个函数,逐行分析它的原理:
def account_login():
password = input('Password:')
if password == '12345':
print('Login success!')
else:
print('Wrong password or invalid input!')
account_login()
account_login()
- 第1行:定义函数,并不需要参数;
- 第2行:使用 input 获得用户输入的字符串并储存在变量 password 中;
- 第3、4行:设置条件,如果用户输入的字符串和预设的密码12345相等时,就执行打印文本‘Login success!’;
-
第5、6行:反之,一切不等于预设密码的输入结果,全部会执行打印错误提示,并且再次调用函数,让用户再次输入密码;
-
第7行:运行函数;
-
第8行:调用函数。
值得一提的是,如果 if 后面的布尔表达式过长或者难于理解,可以采取给变量赋值的办法来储存布尔表达式返回的布尔值 True 或 False。因此上面的代码可以写成这样:
def account_login():
password = input('Password:')
password_correct = password == '12345' #HERE!
if password_correct:
print('Login success!')
else:
print('Wrong password or invalid input!')
account_login()
account_login()
一般情况下,设计程序的时候需要考虑到逻辑的完备性,并对用户可能会产生困扰的情况进行预防性设计,这时候就会有多条件判断。
多条件判断同样很简单,只需在 if 和else 之间增加上 elif
,用法和 if 是一致的。而且条件的判断也是依次进行的,首先看条件是否成立,如果成立那么就运行下面的代码,如果不成立就接着顺次地看下面的条件是否成立,如果都不成立则运行 else 对应的语句。
接下来我们使用 elif 语句给刚才设计的函数增加一个重置密码的功能:
password_list = ['*#*#','12345']
def account_login():
password = input('Password:')
password_correct = password == password_list[-1]
password_reset = password == password_list[0]
if password_correct:
print('Login success!')
elif password_reset:
new_password = input('Enter a new password:')
password_list.append(new_password)
print('Your password has changed successfully!')
account_login()
else:
print('Wrong password or invalid input!')
account_login()
account_login()
- 第1行:创建一个列表,用于储存用户的密码、初始密码和其他数据(对实际数据库的简化模拟);
-
第2行:定义函数;
-
第3行:使用 input 获得用户输入的字符串并储存在变量 password 中;
-
第4行:当用户输入的密码等于密码列表中最后一个元素的时候(即用户最新设定的密码),登录成功;
-
第5~9行:当用户输入的密码等于密码列表中第一个元素的时候(即重置密码的“口令”)触发密码变更,并将变更后的密码储存至列表的最后一个,成为最新的用户密码;
-
第10行:反之,一切不等于预设密码的输入结果,全部会执行打印错误提示,并且再次调用函数,让用户再次输入密码;
-
第11行:调用函数。
在上面的代码中其实可以清晰地看见代码块(Code Block)。代码块的产生是由于缩进,也就是说,具有相同缩进量的代码实际上是在共同完成相同层面的事情,这有点像是编辑文档时不同层级的任务列表。