python⽤if判断⼀个数是不是整数_Python零基础⼊门-流程控
制
流程控制
⼤纲
前⾔
条件判断语句
if语句
elif语句
else语句
嵌套的条件语句
⽤字典代替多个if/else
python新手代码你好占位语句
循环语句
for循环语句
while循环语句
主动结束循环
跳过当前循环
鲜为⼈知的else尾巴
总结
前⾔
⾄今为⽌,我们做的程序都是顺序结构的,没有任何逻辑,只有⼀股脑地从上到下⼀句执⾏完⼜到下⼀句,下⾯我们来学习流程控制语句,
以改变我们程序的执⾏顺序,让它变得更有趣些
条件判断语句
"如果能重来,我要选李⽩,否则我就继续当李荣浩。",这就是条件判断,它根据条件的不同,使程序⾛向不同的流程
if语句
在python或绝⼤多数编程语⾔中,⽤if表⽰如果,它的格式如下
if : if内语句1 if内语句2if外语句3
冒号后回车,再以4个空格缩进为代码块,以上语句1、2都在代码块内,但语句3不在if代码块内
如果条件成⽴(条件为布尔值True时),则先执⾏其代码块内的代码,否则将不执⾏
如果以代码的⽅式来表⽰李荣浩的那句歌词,⼤概长下⾯这个样⼦
# 能重来这个条件是成⽴的again = Trueif again: print('我要选李⽩') print('⼏百年前做的好坏没那么多⼈猜') print('⾄少我还能写写诗来澎湃逗逗⼥孩') print('创结果如下
我要选李⽩⼏百年前做的好坏没那么多⼈猜⾄少我还能写写诗来澎湃逗逗⼥孩创作也能到那么⾼端被
那么多⼈崇拜继续唱再继续唱
可以看到当我们把条件设为不成⽴后,第⼆个if代码块内的代码并不会执⾏
事实上,在python中,if并不需要⼀定接收布尔值,如果接受的是⾮布尔值,解释器会⾃动将它转为布尔值,例如
a = '条件'# 以字符串a作为条件if a: print('条件成⽴!')
虽然字符串"条件"并不是布尔值,但是解释器会把它⾃动转为布尔值,您可以通过内置函数bool把⼀个⾮布尔值的类型主动转为布尔值
is_ok = bool('条件')print(is_ok) # Trueprint(type(is_ok)) #
在python中,空值 None 、整数 0 、空字符串 "" 、空列表 [] 、空元组 tuple() 、空字典 {} 和空集合 set(),它们被转化为布尔值时,皆
被认为是False,其余都为True
# 空值Noneprint(bool(None)) # False# 整数0print(bool(0)) # False# 空字符串print(bool('')) # False#
空列表print(bool([])) # False# 空元组print(bool(tuple())) # Fals 在条件语句中有如下常⽤的操作运算符,它们的结果类型都是布尔值
操作符作⽤例⼦结果==⽐较左右两者是否相等1==1True!=⽐较左右两者是否不相等1!=2True>⽐较左边值是否⼤于右边值2>3False⼩于
右边值3<2False>=⽐较左边值是否⼤于或等于右边值3>=3True<=⽐较左边值是否⼩于或等于右边值2<=3Truenot表⽰对值进⾏取反,将
True变为False 或 将False变为Truenot 1False
还有两个操作符,但它们的结果类型取决于操作数的类型
操作符作⽤例⼦结果and顺序查看左右两者的布尔值是否为True,直到遇到False或最后⼀个时即退出,并返回退出时的值0 and 1或1 and
0皆为0or顺序查看左右两者的布尔值是否为True,直到遇到True或最后⼀个时即退出,并返回退出时的值0 or 1或1 or 0皆为1
可以通过以下例⼦来加深理解
# and的例⼦a = 1 and 'hello' # 先看1的布尔值为True,继续看'hello'的布尔值也为True,到达最后⼀个,退出,所以a='hello'b = 0 and 'no' # 先看0的布尔值为False,
elif语句
elif是else if的简写,它可以与if组成多条件判断,它表⽰再如果,elif不能脱离if单独使⽤,格式如下
if 条件1: 语句1 语句2elif 条件2: 语句3 语句4elif 条件3: 语句5 语句6
例如做⼀个根据考试分数来评价是否优秀的⽰例程序
# 判断成绩# 85分以上为优秀# 60~85分为中等# 60以下为不及格# 分数为61score = 61if score >= 85: print('优秀')elif 60 <= score < 85: print('中等') # 打印出这⼀
60 <= score < 85这⼀句,它等价于(60 <= score) and (score < 85),这⾥⼩括号加与不加效果都⼀样,因为是⽐较运算符先结合,再
轮到and操作符
注意条件判断是顺序判断的,如果某个条件成⽴了,⽆论其后条件成⽴与否,都不会去执⾏了,例如
score = 61if score > 60: print('中等') # 打印出这句后,退出条件判断elif score >= 85: print('优秀')print('结束') # 结束
所以顺序很重要
else语句
else 表⽰ 否则,当所有的if或elif的条件都不成⽴时,将会执⾏else内的代码块
else也不能脱离if单独使⽤,但与elif不同,它还可以与另外两个语句搭配使⽤,后⾯将会介绍到
所以条件判断语句的完整格式如下:
if 条件1: 语句1 语句2elif 条件2: 语句3 语句4else: 语句5 语句6
当条件1和2都不成⽴时,else内的语句5、6将会被执⾏
利⽤else,我们可以将分数判断程序改写成
score = 99if score >= 85: print('优秀') # 打印出这⼀句elif score >= 60: print('中等')else: print('不及格')
是不是更加的简洁了?
注意不能把score >= 60放在第⼀个条件中,否则分数99永远只会打印出中等
我们可以利⽤内置函数input来让⽤户⾃⼰输⼊分数,在此之前要注意input获取到的值类型是字符串,所以得先把字符串转为数字
可以⽤内置函数int将字符串转为整数,或⽤内置函数float将字符串转为浮点数,前提是所输⼊的字符串必须可以被转化为数字,否则将会
报错
number = input('输⼊⼀个数字:') # 输⼊8后回车print(number) # 8print(type(number)) # # 利⽤内置函数int将它转为整数int_number = int(number)print(int_number) #利⽤input函数,分数判断程序可以改写成这样
score = input('请输⼊您的分数:')score = float(score)if score >= 85: print('优秀')elif score >= 60: print('中等')else: print('不及格')
嵌套的条件语句
您可以将if...lse条件语句嵌套到另外⼀个if...lse中
注意4个空格表⽰⼀个代码块,相同缩进数的语句在⼀起组成⼀个语句块
格式⼤概长下⾯这样
if 条件1: 语句 if 条件2: 语句 elif 条件3: 语句 else: 语句elif 条件4: 语句else: 语句
利⽤嵌套条件语句,我们让分数的划分更细⼀点
score = float(input('请输⼊您的分数:'))if score >= 85: if score >= 95: print('极优秀') else: print('优秀')elif score >= 60: if score >= 80: print('良好') 可以通过Python Tutor代码执⾏可视化⽹站 pythontutor/visualize.html,来看到程序的每⼀步执⾏情况
例如输⼊分数为75
⽤字典代替多个if/else
试想有以下代码,根据数字1~7来判断今天是星期⼏
num = int(input('请输⼊数字1~7:'))if num == 1: day = '星期⼀'elif num == 2: day = '星期⼆'elif num == 3: day = '星期三'elif num == 4: day = '星期四'elif num =
如何来让它变得更简洁些呢?
在某些编程语⾔中,可以利⽤ase来简化,但是python并没有switch语句,但是我们可以利⽤字典键值对的特性来达到同样的⽬
的
num = int(input('请输⼊数字1~7:'))day_dict = {1:'星期⼀', 2:'星期⼆', 3:'星期三', 4:'星期四', 5:'星期五', 6:'星期六', 7:'星期天貌似简洁多了
但是有个问题,如果⽤户输⼊的不是1~7数字,将会报错,上⾯的代码并没有做到else的效果
可以巧妙利⽤字典的get⽅法来达到else的效果,它的格式像这样(self, key, default=None, /)
a = {'a':1, 'b':2}# 下⾯这⾏将会报错# print(a['c'])# 利⽤字典get⽅法来获取键'b'的值('b')) # 2# 但当不存在键时,会返回空值('c')) # None# 可
所以我们可以把最后⼀⾏代码改成print((num, '未知')),效果就⼀模⼀样了
占位语句
因为python以缩进为代码块的特性,python有⼀个其他编程语⾔都没有的语句,它叫做占位语句
占位语句⽤pass标识,它表⽰通过的意思,就是告诉python解释器,我在这⾥占着茅坑不拉屎,你不⽤管我,继续往下⾛
假如您的if语句的内代码块啥也不做,或者暂时还没想好要做些啥,pass就派上⽤场了
num = 10if num > 5: # 我还没想好⼤于5时,if内代码块要做些啥 # 先来个pass语句占着位置吧 # 因为如果不占个位,就会报语法错误 passelse: print('⼩于或循环语句
请⽤python算出1+2+3的和
>>> 1+2+36
so easy
请再⽤python算出1++10的和
>>> 1+2+3+4+5+6+7+8+9+1055
请再⽤python算出1+10000的和
所以这时候,循环就派上⽤场了!
在python中,有两种循环,它们分别是for循环与while循环
for循环语句
for循环的格式是for 变量名 in 可迭代对象
在python的基本数据类型中,字符串str、列表list、元组tuple、集合set、字典dict这5个皆为可迭代类型(对象),也就是说,我们可以通
过in循环来遍历其内成员(元素)
# 遍历字符串for s in 'abc': # 字符串内的每⼀个字符'a'、'b'、'c'都会依次赋值给变量s print(s)# 遍历列表for i in [1,2,3]: # 列表内的成员1、2、3会依次赋值给变量这⾥您可能不理解items那⼀段是什么⿁,这⾥涉及到python变量解包的知识
# 在⼀章中,我们学过多个变量的赋值a, b = 1, 2print(a, b) # 1 2# ok, 没问题# 在那⼀章中,我们知道1,2这样会被python解释器当作是元组c = 1, 2print(c) # (1, 2)prin 这就叫变量解包,我们知道了多个变量赋值的真相!
通过内置函数list,我们可以将可迭代对象转化为列表
d = {'a':1, 'b':2}
e = list(d.items())print(e) # [('a', 1), ('b', 2)]# 看到了吗# ⼀个列表⾥,每个元素都是⼀个长度为2的元组# 这样试试for both in e: print(both) # 先打印(
for循环的基友range
内置函数range是for循环的好基友,range是Range Rover(路虎)的range,它中⽂意思是⼀段范围,我们可能暂时玩不起Range
Rover,但是我们必须得把range给玩溜了,才能玩好for循环
range函数有两种格式,它们都返回⼀个可迭代对象
range(stop) -> range objectrange(start, stop[, step]) -> range object
直接上例⼦
# 只给⼀个参数,表⽰结束位置(不包含),它表⽰[0~结束位置)这段范围print(list(range(3))) # [0, 1, 2]# 传⼊两个参数,第⼀个参数表⽰起始位置(包含),第⼆个参数表所以1+10000的和,我们可以通过for与range的配合求出
# ⼀开始将总数设为0sum = 0for num in range(1, 10001): # 将1~10000的每个数累加到sum上 sum = sum + numprint(sum) # 50005000
解放双⼿,美滋滋!
我们再通过观察for循环的每⼀步⾛向来更深⼀步了解它
for循环的⼜⼀基友enumerate
内置函数enumerate作⽤于可迭代对象,⽐如利⽤它,可以同时遍历列表的数据和数据的下标(索引)
函数的格式长这样
enumerate(iterable, start=0)
直接上例⼦
a = ['a', 'b', 'c']for index, data in enumerate(a): print(index, data) # 顺序打印 # 0 a # 1
b # 2 c
将列表传给函数enumerate后,它的返回值和字典的items⽅法返回值有点像
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论