python中if else if语句的用法子句一定跟前一个没有与if else if语句的用法配对的if匹配?


  python的else和elif语句也可以叫做子句,因为它们不能独立使用,两者都是出现在if、for、while语句内部的。else子句可以增加一种选择;而elif子句则是需要检查更多条件时会被使用,与if和else一同使用,elif是else if 的简写。
  if和else语句使用方法
  下面用一个例题来说明if和else语句是如何搭配使用的,首先设定一个整型变量,我们来看看这个变量是是比0大还是比0小。
  >>>num = 0
  >>>if num > 0 :
  >>> print '这个数比0大'
  >>>else :
  >>> print '这个数比0小'
  首先程序判断了if语句的条件是否为真,如果是真,if语句块内容会被执行。如果这个num > 0,那么print '这个数比0大'会被执行。但num = 0,显然if语句的条件为假,对应语句块不会被执行;如果第一个语句块没被执行,那么就会执行第二个语句块。
  程序计算结果是‘这个数比0小’,有的人会有疑问了,应该是这个数等于0的结果更确切一些。那么为什么会出现这样的结果呢?拿案例中的数据来说,if和else语句的判断检查方式是,如果num > 0就输出 '这个数比0大' ,否则输出 '这个数比0小' 。因为else没有条件可设置,所以if条件不能被满足为假时,else子句块就会被无条件输出。
  对于这道题来说,我们要再给它加一个条件,这样得到的结果会更正确些,这时就会用到elif子句了。
  if和else、elif语句使用方法
  >>>num = 0
  >>>if num > 0 :
  >>> print '这个数比0大'
  >>>elif num < 0 :
  >>> print '这个数比0小'
  >>>else :
  >>> print '这个数是0'
  程序分别对if和elif做了判断,如果条件不为真,则输出else的语句块内容。程序运行结果是:这个数是0
  if和else、elif语句使用时要注意以下两点:
  1、else、elif为子块,不能独立使用
  2、一个if语句中可以包含多个elif语句,但结尾只能有一个else语句
  else在while、for循环语句中的作用
  python中,可以在while和for循环中使用else子句,它只是在循环结束之后才会被执行,如果同时使用了break语句那么else子句块会被跳过。所以注意else子句和break语句不能同时使用!
  以上内容为大家介绍了python培训之elif语句报错是什么原因,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/

获得更多资料欢迎进入我的网站或者 csdn或者博客园
本节主要介绍pythonif条件语句,以及用法。下面附有之前的文章;
语句快并非一种语句,是通过缩进形成的语句集合;可以使用的缩进符:TAb建(相当于四个空格),4个空格,8个空格,可以成倍增加形成嵌套语句快;一般来说使用四个空格是最规范的。功能:语句快是在条件为真时执行(if)或执行多次(循环)的一组语句;
#伪代码
this is a line
this is a condition:this is a block.....
there wo escaped the inner block
布尔型介绍
假(false):会被看做假的值:FALSE ,None ,0 ,‘ ’ (没有空格) ,“ ” (没有空格) ,() ,[] ,{}真(true):其他的都会被判定为真:测试如下:
#假
>>> bool(False)
False
>>> bool(None)
False
>>> bool('')
False
>>> bool("")
False
>>> bool()
False
>>> bool([])
False
>>> bool(())
False
>>> bool({})
False
>>>
#真
>>> bool(True)
True
>>> bool('ddd')
True
>>> bool(1)
True
>>> bool([1])
True
>>> bool((1))
True
>>> bool({1})
True
>>>
条件执行和if语句
if语句
if语句可以实现条件执行,如果条件判定为真,则后面的语句块执行,如果条件为假,语句块就不会被执行。
#如果用户输入:0-9 就打印True
>>> x=int(input("Please enter an integer in 0-9 "))
Please enter an integer in 0-9 6
if 0<x<9:print(True)True
else语句
else子句(之所以叫子句,是因为它不是独立的语句,而只能作为if语句的一部分)当条件不满足时执行;
#如果用户输入:0-9 就打印True,不在之类输出 False
>>> x=int(input("Please enter an integer in 0-9 "))
Please enter an integer in 0-9 11
>>> if 0<x<9:
...
print(True)
... else:
...
print(False)
...
False
elif语句
如果需要检查多个条件,就可以使用elif,它是“else if”的简写,也是if和else子句的联合使用——也就是具有条件的else子句。
#如果用户输入在0-9:就打印in 0-9 ,否则如果输出大于9:就打印 >9,否则打印:<0
>>> x=int(input("Please enter an integer in 0-9 "))
Please enter an integer in 0-9 -1
>>> if 0<x<9:
...
print("in 0-9")
... elif x>9:
...
print(">9")
... else:
...
print("<0")
...
<0
>>>
嵌套if语句
if语句里可以嵌套使用if语句:
x=int(input("Please enter an integer in 0-9 "))
if x>=0:if x>9:print("x>9")elif x==0:print("x==0")
else:print('x<0')Please enter an integer in 0-9 0
x==0
更复杂的条件:
条件运算符一览:
#比较运算符
x==y x等于y
x<y x小于y
x>y x大于y
x>=y x大于等于y
x<=y x小于等于y
x!=y x不等于y
a<x<b
x大于a小于b
#同一性运算符
x is y x和y是同一个对象
x is not y x和y是不同的对象
#成员资格运算符
x in y x是y容器的成员
x not in y x不是y容器的成员
同一性运算符说明:看以来和==一样实际是时不同的,只有两个绑定在相同的对象时才是真(当然当为数值变量时是和==相同的):
#a与b不时指向同一对象
>>> a=[1,2]
>>> b=[1,2]
>>> a is b
False
#a与b指向同一对象
>>> a=b=[1,2]
>>> a is b
True
in成员资格运算符说明
#成员在序列中返回真
>>> a=[1,2,3]
>>> b=1
>>> c=4
>>> b in a
True
>>> c in a
False
>>>
逻辑运算符:
and :x and y 返回的结果是决定表达式结果的值。如果 x 为真,则 y 决定结果,返回 y ;如果 x 为假,x 决定了结果为假,返回 x。or :x or y 跟 and 一样都是返回决定表达式结果的值。not : 返回表达式结果的“相反的值”。如果表达式结果为真,则返回false;如果表达式结果为假,则返回true。
>>> a=1
>>> b=2
>>> a and b
2
>>> a=1
>>> b=0
>>> a and b
0
>>> a or b
1
>>> not b
True
>>>
if语句有个非常有用的近亲,其工作方式多少有点像下面这样(伪代码):if not condition:crash program这样做是因为与其让程序在晚些时候崩溃,不如在错误条件出现时直接让它崩溃。一般来说,你可以要求某些条件必须为真。语句中使用的关键字为assert。如果需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert语句就有用了,可以在程序中置入检查点:条件后可以添加字符串(用逗号把条件和字符串隔开),用来解释断言:
>>> age=-1
>>> assert 0<age<150,"The age must be realistic"
Traceback (most recent call last):File "<stdin>", line 1, in <module>
AssertionError: The age must be realistic
>>>
>>> age=10
>>> assert 0<age<150,"The age must be realistic"
>>>
相关链接:
python3入门之类python3入门之函数python3入门之循环python3之if语句python3入门之赋值语句介绍python3入门之print,import,input介绍python3入门之setpython3入门之字典python3入门之字符串python3入门之列表和元组python3入门之软件安装python3爬虫之入门和正则表达式
1.range函数 a)第一种情况for i in range(10) 循环十次,其中i的值从0取值到9 b)第二种情况 in range(1,10)从1顺序的取到10 步伐为1 但是不包括10,如果是in rangle(10,1)这个是错误的,必须写成in rangle(10,1,-1) c)第三种情况 in range(1,10,2) 从1顺序的取到10 步伐为2 例子截图:此处注意那个“”日“” python是用缩进格(tab)来判断是否属于for句下面,还有for if等语句,都需要用:结尾 ![Center][] 2.raw\_input函数,此函数为提示用户按下键盘某个键,退出程序,如果不按下回车键,运行程序会报错,提示有一个程序正在运行,目的在于持久性的运行程序。 例子: ![Center 1][] 3.符号 python中,单引号‘’ 双引号"" 三双引号""" """(小编不知道这叫什么,所以起了个别名) a)对于创建字符串来说,既可以使用单引号 ,也可以使用双引号,当然小编也用三双引号试了下 貌似计算机,并不是很关系具体你用的是把那个,输出的字符串都是一样的,如下图: ![Center 2][] b)对于双引号跟三双引号的作用,是这样的 ![Center 3][] 4.print函数,顾名思义 就是打印函数,比较简单,比如print("xjp")就会打印字符串xjp,多个参数时,print("xxx","jjj","ppp"),在输出的结果中,各个数据的值之间是分开的,这是print函数的默认行为 a)比如\\n代表换行 b)\\t代表对齐, c)\\a代表响一下电脑的蜂鸣器(cmd 或者 控制台), d)特殊字符前面加个“\\”比如当你想输出\\的时候,前面需要加一个\\,比如print("\\t\\t\\t \\\\ \\\\ \\\\ \\\\ \\\\") 输出的是\\ \\ \\ \\ \\, e)如果需要输出重复字符串,print("xjp"\*5) 就会输出xjpxjpxjpxjpxjp 5.python数值类型 a)整数比如整数 0 ,100 -100 b)浮点数比如带小数的数字,比如3.3,-99.5,,1.0 6.运算符 “+” “-” “\*” “/(真除,7/3=2.3333)” “//(整数 7//3=2)” “%(求模)7%3=2”,python(3.X版本不同版本有区别,比如你使用python2.7.1 3/2=1) 7.input说白了 这个函数就相当于c语言中的scanf,也就是获取用户输入的字符串 比如 name = input("what's your name? :") 中间的字符串是用来提示用户的,input会等待用户输入点东西,但用户按下enter的时候,input就会以字符串的形式全部存入到name中。,如果需要转化数值类型,直接在前加上int(),float() ,str() 小编发现,当我用python2.7时候,input报错了,说name没定义,但是实际name的值可以赋值进去了,在此小编没有去深究,当使用python3.5版本时候,发现没问题,看下图 ![Center 4][] 8.字符串格式转变的几个函数写的几个方法,使用的函数 a)全部变成大写字母输出 name="xiejiangpeng" 则 print(name.upper()) 输出XIEJIANGPENG b)全部变成小写字母输出 name="Xiejiangpeng" 则print(name.lower()) 输出xiejiangpeng c)变成标题格式输出 name= "xie jiang peng" 则print(name.title()) 输出Xie Jiang Peng d)字符串中某段字符串替换 name= xiejiangpeng 则print(name.replace("x","hello")) 输出 helloiejiangpeng ,意思是将字符串中所有的x 用hello代替,创建一个新的字符串,另外此函数还可以加第三个参数,例如当name= xie xie xie print(name.replace("x","hello",2)) 则输出 helloie helloie xie 第三个参数时限制最多替换多少次 此外提供一些字符串方法: ![Center 5][] 9.复合赋值运算符 运算符 范例 等价于 \*= x\*=5 x=x\*5 /= x/=5 x=x/5 %= x%=5 x=x%5 \+= x+=5 x=x+5 \-= x-=5 x=x-5 10.随机函数,randint randrange,使用时需要导入 random包,然后通过random.(函数)进行引用,属于点标记法来引用模块中的任何内容 ![Center 6][] 11.if函数 if mood == 0: elif mood == 1: elif mood ==2: else: ![Center 7][] 12.while函数 例如:记住此程序中name变量必须初始化,值可以为“” 也可以“xxxwdf” 但是为空的时候,代码的可读性更加好,为了优化代码的目的我们可以使用“” ![Center 8][] #encoding=utf-8 x=1 while x<100: x=x+1 print(x) 13.break和continue的用法 前者是结束循环,后者是结算此次循环, 根据下面这个例子可以理解 记住tab缩进 否则出现莫名其妙的错误,次例子输出结果是 1 2 3 4 6 7 8 9 10 ![Center 9][] 14.逻辑运算符not,可以用来检测用户是否输入了字符(回车不算) \#not 练习 \#coding=utf-8 name = "" while not name: name=input("请输入你的名字:") ~ ~ ~ 程序运行后,name初始化为空字符串,相当于False,因此not False也就意味着True,当用户没有输入数据按下回车时,程序就会继续提示要求用户输入你的名字 当用户输入数据时,此条件就为False了 15.逻辑运算符,or and 一般用于if while 连接条件语句,组合成一个新的条件语句 16.函数isdigit()检查字符是否由纯数字组成、当字符串str为纯数字的时候,str.isdigit()为True 当不是纯数字组成的时候,str.isdigit() 为False 17.quit() exit()二个函数放的位置可以结束程序运行 18.for循环用法,比其它语言的for循环更加灵活,不只是可以计数器变量进行循环,比如对序列进行遍历,可以通过一个变量来获取序列中的元素 比如 下面那个例子 ![Center 10][] 19.len函数,用途 计算字符串长度的函数 比如str=q !(中间有个空格) print(len(str)) 会打印出3,另外检查一个字符串中是否含有某个字符 ,可以用if "str1" in str ![Center 11][] 20.索引 a)正位置索引,比如str="xjp" 那么print(str\[0\]) 打印出来的是"x" b)负位置索引,比如str="xjp" 那么print(str\[-1\]) 打印出来的是“p” 21.函数randrange的用法,比如random.randrange(num1,num2) 随机取num1到num2中的数据 ![Center 12][] 21 利用for循环 以及in 去除元素 代码如下 #演示利用for循环创建新的字符串 message = input("请输入一个字符串\n") new_message ="" VOWELS = "aeiou" for letter in message: if letter.lower() not in VOWELS: print(letter.lower()) new_message += letter print("新的字符串为",new_message) 其中 for letter.lower() 还有VOWELS是代表大写 这种大写在python中有特殊的含义 代表不变的常量 22.切割字符串代码 可以根据索引随意切割 代码如下,其中None在这里是为了初始化start的值,代表的意思为“无” # 对字符串进行切片 word = "xjplove" print( """ 字符串1索引图 0 1 2 3 4 5 6 7 x j p l o v e -7 -6 -5 -4 -3 -2 -1 """ ) print("请输入 你需要切断的数字") start = None while start !="": start = (input("\nStart")) if start: start = int(start) finish = int(input("finish:")) print("word[", start,":",finish,"] is",end=" ") print(word[start:finish]) 23.list中的内置函数 #列表 python的苦力 #1.append追加一个列值 list1=[None]*1 list1.append(1) print(list1) #2.count统计某个字符出现的字数 print(["x","x","1","s","x"].count("x")) print(list("xiejiangpengx").count("x")) #3.extend跟+区别 这个是重新创建一个新的list a=[1,2,3] b=[4,5,6] a.extend(b) print(a) #4.index 找到list中某个值对应的索引位置 namelist=["xiejiangpeng","pengmin","dog","rubbish"] print(namelist.index("pengmin")) #5.insert 在某个位置插入值(可以是个列表) list_insert=[1,3,4] cc=[2,2] list_insert.insert(1,cc) list_insert.insert(2,"xiejiangpeng") print(list_insert) #6.pop 移除列表中的某个元素(默认是最后一个) 其中可以返回这个值 跟append刚好相反 #x.append(x.pop())也是返回x这个列表 list_pop=[1,2,3] list_pop.pop() list_pop.pop(1) print(list_pop) #7.remove 删除某个值 但是不会返回 list_remove=["to","be","or","not"] list_remove.remove("be") print(list_remove) #8.reverse 反向存放 比如1,3,2 就会变成2,3,1 list_reverse=[1,3,2] list_reverse.reverse() print(list_reverse) #9.sort 可能是从小到大排序 复制list=list_t[:] 将list_t的每个分片都复制给sort list_sort=[1,2,4,3] list_sort.sort() print(list_sort) 24.元组tuple tuple1=1,#定义一个元素的元组 后面加一个逗号 tuple2=1,2,3,4,5#定义多个元素的元组 逗号分隔 list=[1,2,3,4]#定义一个列表元组 tuple_list=list,list,list print(tuple1) print(tuple2) print(tuple_list) 25.字符串格式化操作 #%s叫做转换说明符 用来标记需要插入的转换值得为之,s表示值会被格式化成字符串 xjp="https://%s.%s" value=("xiejiangpeng","com") print(xjp%value) #如果字符串中包含%的字符 必须使用%% 这样python就不会误认为百分号是转换说明符了 pm="%%xiejiangpeng.%s" value1=("com") print(pm%value1) #引入模板字符串 substitute模板方法传递进来的关键字参数foo替换字符串中的$foo from string import Template s=Template('$x,glorious $x!') print(s.substitute(x='slurm')) #当引入的字符串 是单词的一部分的时候 需要使用括号括起来 s1=Template('xie${x}peng') print(s1.substitute(x='jiang')) #字符串中有$符中 可以使用$$来结局这个问题 s2=Template("make $$ selling ${x}") print(s2.substitute(x='slurm!')) #可以使用dict变量提供值/名称对 s_dict=Template('$name and $sex' ) message={} message['name']="xiejiangpeng" message['sex']="男" print(s_dict.substitute(message)) #字符串格式化:完整 print('%s,%s,%s' %(1,2,3)) #字段宽度(左边为空 宽度也就是整体数字)和精度(几位小数) print('%10.2f' %12.565566)#十个宽度 二个小数点保留 print('%010.2f' %12.565566)#十个宽度 前面默认用0填充 print('%-10.2f' %12.565566)#十个宽度 前面默认用0填充 -代表左对齐数值 print('%+10.2f' %12.565566)#十个宽度 前面默认用0填充 +代表不管正数负数都标记符号 对齐一下正负数 print('%''10.2f' %12.565566)#十个宽度 前面默认用0填充 ""代表正数前面加空格 对齐一下正负数 26.字符串方法调用: """字符串的方法""" #1.find 在一个很长的字符串中找子串 找到了返回第最左端索引假设是[3:] 就返回3 这里空格也算一个字符 没有找到返回-1 str1="my name is xiejiangpeng" print(str1.find("name is")) #2.join 连接序列中的每个元素 记住是用'xx'字符串的方法 其中xx可以使用1xx2xx3 而不是list.join list=['1','2','3'] print(''.join(list)) #3.lower返回字符串的小写字母 str2="ewqarfewDIOIJDILJNDLINLIinewlirnilh" print(str2.lower()) #4.replace 替换字符串 例如下方就会将xiejiangpeng改换成pengmin str3="my name is xiejiangpeng"e("xiejiangpeng","pengmin")) print(str3.replac #5.split 将字符串分割成序列 跟join刚好相反 默认按照空格分割 str4="xiejiangpeng+sss" print(str4.split("+")) #6.strip 除去二测(不包括内部)空格的字符串 str5=" ddd dd d" print(str5.strip()) 27 字典的创建和相关方法: #ecoding=utf-8 """字典基础""" #1.首先他可以将元组[(AA,a),(BB,b)]衍射成为字典形式 List_Tuple=[('AA','a'),('BB','b')] List_Dict=dict(List_Tuple) print(List_Dict) #2.可以通过关键字来进行创建字典 d=dict(name='xie',age='42') print(d) #3.字典的基本操作 #a.len(dict)返回dict中键+值的数量 也就是项的数量 多少对 #b.dict[k] 返回键k上 对应的值 #c.dict[k]=v 将键k上面对应的值 重新进行赋值 #d.del dict[k] 删除键k上对应的值 #e. k in dict 检查dict中是否存在键为K的项 #f.对dict中的key进行升序排列for key in sorted(Dict.keys()): #4.利用字典插入字符串对 temp="""` %(title)s

%(title)s

%(text)s

""" data={'title':'My Home Page','text':'Welcome to my home page'} print(temp % data) #5.字典的方法 #a.clear方法 清除字典中所有的项 所以无返回值(或者返回None) a={'name':'xiejiangpeng','sex':'男','age':'22'} # print(a.clear()) # print(a) #b.copy方法 b=a.copy() print(b) #c.fromkeys 使用给定的键值创立新的字典(中间需要放[]),每个值,默认为None FromKeysDict={}.fromkeys(['a','b']) print(FromKeysDict) #d.get 获取里面的某个值 相对于dict["name"]而言,当里面的键不存在的时候 不会报错 而是会返回None print(a.get("name")) #e.has_key 检查字典中是否包含某个键(python3中没有这个函数了) # print(a.has_key("name")) #f.items返回字典的项,以元组的形式 itmesDict={'name':'xiejiangpeng','sex':'男','age':'22'} print(itmesDict.items()) #g.keys将字典里面的键以列表的形式返回 keysdict={'name':'xiejiangpeng','sex':'男','age':'22'} print(keysdict.keys()) #f.pop用于删除某个项(填键)同时返回键对应的值 popdict={'name':'xiejiangpeng','sex':'男','age':'22'} print(popdict.pop("name")) print(popdict) #g.popitem随机删除一个项,同时会返回这个项 因为dict是无序的  popitemdict={'name':'xiejiangpeng','sex':'男','age':'22'} print(popitemdict.popitem()) print(popitemdict) #h.setdefault()获得给定键的值,如果没有这个键, 追加一个同时返回这个键值,如果存在;不追加一个项,同时返回这个键对应的值 setdefaultdict={'name':'xiejiangpeng','sex':'男','age':'22'} print(setdefaultdict.setdefault('hoppy','吃饭')) print(setdefaultdict) #i.values返回dict中的值 valuesdict={'a':'1','b':'2','c':'3'} print(valuesdict.values()) 28.布尔值:False-->(包括,None,0,"",(),[],{})空列表或者空元组或者开空字典均识别为假,但是他们的反向均为真也就是True,也就是说在pyhon中所有的值都可以作为布尔值,所以几乎我们不需要对他们进行转化(python会自动转化这些值) 29.比较运算符,除了我们经常使用的a==b,已经a>=c这类,还有下面的 比如:a is b \#a和b是同一个对象(比如a=b=\[1\] 那么a is b 输出为真),但是下面哪个 输出却是假 a=\[1\] b=\[1\] print(a is b) 比如:a is not b \#a和b是不同一个对象 比如:a in b \#a是b的容器(比如 序列的成员) 比如:a in not b \#a不是b的容器(比如 不是序列的成员) 其中is叫做同一运算符,记住不是比较值是否相等,而是比较是不是绑定在同一个对象,给你们举个例子: 比如x=y=\[1,2,3\] z=\[1,2,3\] x in y 输出是真;但是x in z输出却是假 其中in 叫做成员资格运算符 这个比如 x in "xjepeng" 意思是后者里面是否包含前者 29.assert 断言 比如下方判断输入的值是否在某个区间,当跟断言不一直的时候,引发异常 #encoding=utf-8 num=raw_input("num:") a=int(num) try: assert 1

我要回帖

更多关于 if else if语句的用法 的文章

 

随机推荐