python-程序控制-if(四)
1.input函数
input函数是python的内置函数,它专门用来接收标准输入数据,当用户在终端输入回车后表示输入结束,函数返回值是字符串类型。
input函数实例:
#coding=utf-8 value =input("请输入一个整数:") print(value,type(value)) #输入的是字符串,需要转为整数int(str),float(str) vs=int(value) if vs>10: print("大于10") else: print("小于10")
2.if语句
if条件语句是流程控制语句,if 语句包含零个或多个 elif 子句及可选的 else 子句,关键字elif 是else if的缩写,可以避免过多的缩进,python里没有else if 这种语法。if语句的核心作用是控制程序走向哪一个逻辑分支。
示例:
#coding=utf-8; def iftest(a): if a<=10: print "if",a; elif a>10 and a<100: print "elif",a; else: print "else",a; iftest(99);
- if关键字后面必须紧跟一个表达式,这里a<=10就是一个表达式。
- elif关键字后面也必须紧跟一个表达式,这里a》10 and a<100 也是一个表达式。
- if , elif , else 各自产生一个逻辑分支,也就是print部分
- elif 语句可以有0或者多个。
- else语句可以有0或者一个else。
if语句的执行过程如下: 从上到下,依次判断if,elif表达式是否成立,如果成立,则进入对应的逻辑分支执行代码 表达式的计算结果如果是True,那么表达式就是成立的,反之,表达式不成立。 if,elif, else 各自形成逻辑分支,程序在执行时,只能进入其中的某一个逻辑分支,无法进入两个或两个以上。
2.1 if语句的三种形式
从形式上看,if语句可以分为3中形式:
- if statement
- if-else
- if-elif-else
if statement,这种形式的if语句只有一个if关键字,当满足某个条件时,程序执行对应的逻辑分支。
#coding=utf-8; value = input("请输入一个整数:") print(value, type(value)); if value %2 == 0 : print value,"是偶数";
如果想对输入的奇数做响应,那么应当使用if-else 这种if语句形式。
#coding=utf-8; value = input("请输入一个整数:") print(value, type(value)); if value %2 == 0 : print value,"是偶数"; elif value %2 != 0: print value,"是奇数";
当对应多个条件有多个逻辑分支时,则应使用if-elif-else 形式的if语句来处理,比如下面的代码:
temperature = input("请输入今天的温度:"); temperature = int(temperature); if temperature < 0: print("寒冷"); elif temperature < 15: print("微冷"); elif temperature < 25: print("温暖"); else: print("炎热");
将温度划分为4个区间
- 小于0, 寒冷
- 大于等于0小于15度,微冷
- 大于等于15小于25,温暖
- 大于等于25,炎热
程序将根据用户输入的温度判断并输出温度输出哪一个区间。if语句在执行时,从上至下依次判断下面3个表达式是否成立
- temperature < 0
- temperature < 15
- temperature < 25
如果表达式1成立,就进入if关键字所对应的逻辑分支输出寒冷,注意,此刻已经有一个条件表达式成立了,那么其他的条件表达式就不会再判断了。
如果表达式1不成立,继续判断表达式2是否成立,此时已经可以断定temperature是大于等于0的,因此第二个表达式里我没有特别的注明大于等于0,其实也可以写成 0 <= temperature < 15,只是从逻辑上看是毫无必要的,因此只有当temperature大于等0时才有机会判断第二个表达式是否成立。
如果表达式2也不成立,则计算判断表达式3,如果表达式3也不成立,则直接进入到else所对应的逻辑分支,temperature 必然是大于等于25。
2.2 if语句如何判断条件表达式是否成立
python的if语句在判断条件表达式是否成立时有自己特殊的规则,我们先来看常规的情况:
if 5 > 3: pass
表达式 5 > 3 的计算结果是True,属于bool类型,此时表达式成立,这与其他编程语言并无区别,python的特殊之处在于它并不要求if语句中的表达式计算结果必须是bool类型,比如下面的if语句:
lst = [] if lst: print("lst不是空列表")
表达式lst的计算结果就是lst本身,属于列表类型,这在其他编程语言里可能是个语法错误,但python却支持这种写法,那么它是如何处理的呢,方法其实很简单,使用bool内置函数对表达式的结果进行换换,如果转换结果是True,条件表达式成立,反之条件表达式不成立。
bool([]) 的结果是False,bool函数传入的参数如果是空列表,空集合,空字符串,空字典,None,0, False,函数的返回值就是False,除此以外都是True。
2.3 if 嵌套
最简单的if条件语句结构如下:
if condition: block
当表达式condition成立时,程序进入到if 下面的代码块block执行,在block中,还可以写if条件语句么?答案是肯定的,这样就形成了一个if嵌套,在某个条件下,继续针对不同的条件进行控制,嵌套的层次不受限制,只要你自己能理清思路就行。
使用input函数接收用户的输入,用户输入一个正整数num,对num进行判断,如果num小于50 ,那么则继续判断它能否被3整除,如果能,输出“可以被3整除”,否则输出“不能被3整除”, 如果numd大于等于50,则继续判断能否被5整除,如果能,输出“可以被5整除”,否则输出“不能被5整除”
直接给出示例代码:
num = int(input("输入一个数字:")) if num < 50: if num % 3 == 0: print('可以被3整除') else: print('不能被3整除') else: if num % 5 == 0: print("可以被5整除") else: print("不能被5整除")