python基础学习路线:
· 数据分析之python基础篇{基础语法}
· 数据分析之python基础篇{数据类型}
· 数据分析之python基础篇{控制流语句}
· 数据分析之python基础篇{函数}
· 数据分析之python基础篇{模块}
· 数据分析之python基础篇{文件操作}
· 数据分析之python基础篇{Pymysql}
· 数据分析之python基础篇{面向对象}
条件控制
计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。
单条件判断
&esmp;只要看到if关键词
了 , 就是进入条件语句 ,如果条件语句为Ture,则进入分支语句,条件后面要使用冒号 : 表示接下来是满足条件后要执行的语句块
其中使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
a = 1
if a < 0: # 条件语句
print(1) # 符合条件,执行分支语句
print(2) # 不符合条件,跳出条件判断
运行结果:2
多条件判断
if-else
根据gif图,if-else
主要用来判断两个条件,如果 if 后条件为 True, 将执行 第一个分支语句语句,如果if后条件为False,则执行else下的分支语句
a = 1
if a == 2:
print(1)
else:
print('不成立')
print('后面的代码')
运行结果:不成立
后面的代码
注意:else关键字可以换成
elif关键字
else关键字,代表是“其他”的意思,所以在else关键字的意思就是不满足前面所有条件判断语,所以它的后面不允许有其他的条件判断句。
a = 1
if a == 2:
print(1)
else a == 1: # 这样就会报错
print('不成立')
print('后面的代码')
if-elif-else
这是用的最多的多条件语句判断。elif是else if的缩写,完全可以有多个elif,所以if语句的完整形式就是:
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
明确条件后,可以不写else语句,比如:
age = int(input("请输入你家狗狗的年龄: "))
print("")
if age <= 0:
print("你是在逗我吧!")
elif age == 1:
print("相当于 14 岁的人。")
elif age == 2:
print("相当于 22 岁的人。")
elif age > 2:
human = 22 + (age -2)*5
print("对应人类年龄: ", human)
### 退出提示
input("点击 enter 键退出")
不明确条件后,需要写上else语句,比如:
age = 3
if age >= 18:
print('adult')
elif age >= 6:
print('teenager')
else:
print('kid')
布尔类型和其他数据类型之间的转换关系
在if的条件判断语句中,关于布尔类型。所有空值为假,其他为真
if 'dde':
print('你好')
运行结果:你好
关于假的布尔类型数据,除了空值外,0也会判断为False。
if 0:
print('你好')
print('哈哈')
运行结果:哈哈
字符串为空会判断为Flase,不过当字符串为0,就判断为Ture
a = ""
if a:
print('你好')
print('哈哈')
运行结果:哈哈
a = "0"
if a:
print('你好')
print('哈哈')
运行结果:你好
哈哈
此外,空的列表也会判断为False
a = []
if a:
print('你好')
print('哈哈')
运行结果:哈哈
if嵌套
通过学习if的基本用法,已经知道了
当需要满足条件去做事情的这种情况需要使用if
当满足条件时做事情A,不满足条件做事情B的这种情况使用if-elif
想一想:坐火车或者地铁的实际情况是:先进行安检如果安检通过才会判断是否有车票,或者是先检查是否有车票之后才会进行安检,即实际的情况某个判断是再另外一个判断成立的基础上进行的,这样的情况该怎样解决呢?
答:if嵌套
if嵌套的格式
if 条件1:
满足条件1 做的事情1
满足条件1 做的事情2
...(省略)...
if 条件2:
满足条件2 做的事情1
满足条件2 做的事情2
...(省略)...
# 先检票 , 如果有票, 则进站
# 如果没票, 不能进站
# 如果成功进站了, 进行安检
# 如果没有危险物品, 则可以上车
# 如果有危险物品, 被抓到派出所
ticket = True
danger_thing = False
if ticket :# 有票的
print('您有票,可以进站')
if not danger_thing: # 没有危险物品
print('恭喜您,可以登车了')
else:
print('您身上有危险物品, 请跟我走一趟吧!')
else: # 没票
print('对不起, 您没票, 不能进站')
运行结果:您有票,可以进站
恭喜您,可以登车了
num=int(input("输入一个数字:"))
if num%2==0:
if num%3==0:
print ("你输入的数字可以整除 2 和 3")
else:
print ("你输入的数字可以整除 2,但不能整除 3")
else:
if num%3==0:
print ("你输入的数字可以整除 3,但不能整除 2")
else:
print ("你输入的数字不能整除 2 和 3")
练习
练习一:从键盘获取自己的年龄,判断是否大于或者等于18岁,如果满足就输出“哥,已成年,网吧可以去了”使用input从键盘中获取数据,并且存入到一个变量中 使用if语句,来判断 age>=18是否成立
# 1 - 4 岁 婴儿
# 4 - 18 岁 儿童
# 18 - 35 青年
# 35 - 55 中年
# 55 以上 老年
age = int(input('请输入您的年龄'))
if age <= 4:
print('你是一个小baby')
elif age <= 18:
print('你还未成年,不能去网吧')
elif age <= 35:
print('你已经成年了, 可以去网吧玩游戏了')
elif age <= 55:
print('你是一个中年人了, 不需要去网吧了')
else:
print('您是一个老年人, 和网吧没有关系了')
练习二:小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:
低于18.5:过轻 18.5-25:正常 25-28:过重 28-32:肥胖 高于32:严重肥胖 用if-elif判断并打印结果:
lengh = 1.75
weight = 80.5
BMI = weight/(lengh*lengh)
if BMI < 18.5:
print('过轻')
elif 18.5<=BMI<25:
print('正常')
elif 25<=BMI<28:
print('过重')
elif 28<= BMI < 32:
print('肥胖')
练习三:情节描述:上公交车,并且可以有座位坐下。要求:输入公交卡当前的余额,只要超过2元,就可以上公交车;如果空座位的数量大于0,就可以坐下
cardM =int(input('卡的余额是:'))
if cardM >= 2:
print('可以上公交车')
set = int(input('空座位为:'))
if set > 0:
print('坐下')
else:
print('站着')
else:
print('不可以上公交车')
练习四:判断年份是否是闰年
year = int(input('请输入年份:'))
if ((year%4==0) and (year%100!= 0)) or (year%400==0):
print('您输入的年份:{}年是闰年'.format(year))
else:
print('您输入的年份:{}年是平年'.format(year))
循环控制
循环语句的使用场景:这一天老师让你抄写一百遍"我错了",根据我们之前学习的知识,就是运用print语句,连续敲一百遍,
print("我错了")
,于是我们很自然的想到,是不是可以通过让一段代码重复运行的方法来减少工作量呢?
借此,我们可以借用循环语句
来完成工作,Python 中的循环语句有 for 和 while。
i = 0
while i < 100:
print("我错了")
i += 1
# 或者
for i in range(0,100):
print("我错了")
while语句
Python 中 while 语句的一般形式:
#while循环格式
while 条件表达式:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
...(省略)...
比如:
同样需要注意
冒号和缩进
i = 0
while i<5:
print("当前是第{}次执行循环:".format(i+1),end="")
print("i={}".format(i))
i+=1
运行结果:当前是第1次执行循环:i=0
当前是第2次执行循环:i=1
当前是第3次执行循环:i=2
当前是第4次执行循环:i=3
当前是第5次执行循环:i=4
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 到 %d 之和为: %d" % (n,sum))
运行结果:1 到 100 之和为: 5050
while 循环使用 else 语句
如果 while 后面的条件语句为 false 时,则执行 else 的语句块。
while <expr>:
<statement(s)>
else:
<additional_statement(s)>
expr 条件语句为 true 则执行 statement(s) 语句块,如果为 false,则执行 additional_statement(s)。
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
运行结果:0 小于 5
1 小于 5
2 小于 5
3 小于 5
4 小于 5
5 大于或等于 5
if与while嵌套使用
# 计算1~100之间偶数的累积和(包含1和100)
i = 1
sum_n = 0
while i<=100:
if i%2 == 0:
sum_n = sum_n + i
i+=1
print("1~100的累积和为:{}".format(sum_n))
运行结果:1~100的累积和为:2550
while对字符串循环
可以使用while循环对字符串进行遍历,不过就需要配合字符串的索引功能
了
s = """做生意,熟人登门,绝不可以杀熟,但是也不可以不收钱,不赚不亏,是最好的。否则越做生意,就越没朋友。你次次亏本,那人还喜欢时时登门,证明对方不把你当朋友。你次次赚得比平时还多,那就更明白了,你根本不曾将那人当做朋友。若是这般,反而爽利。若是前者,就要揪心了。"""
i = 0
while i < len(s): # len(s)计算出s的长度
print(s[i],end='-' )
i += 1
运行结果:做-生-意-,-熟-人-登-门-,-绝-不-可-以-杀-熟-,-但-是-也-不-可-以-不-收-钱-,-不-赚-不-亏-,-是-最-好-的-。-否-则-越-做-生-意-,-就-越-没-朋-友-。-你-次-次-亏-本-,-那-人-还-喜-欢-时-时-登-门-,-证-明-对-方-不-把-你-当-朋-友-。-你-次-次-赚-得-比-平-时-还-多-,-那-就-更-明-白-了-,-你-根-本-不-曾-将-那-人-当-做-朋-友-。-若-是-这-般-,-反-而-爽-利-。-若-是-前-者-,-就-要-揪-心-了-。-
for语句
for循环和编程语言中常见的循环不太一样,它实际上不是一个循环,而是一个遍历功能,会依次对一个可迭代的数据中的每一个数据进行操作.
在Python中 for循环可以遍历任何序列的项目,如一个列表或者一个字符串等。
#for循环的格式
for 临时变量 in 遍历的范围(列表或者字符串等):
循环满足条件时执行的代码
for循环对列表遍历
for i in [1,2,3,4,5,6]:
print('第{}次承认错误'.format(i))
运行结果:第1次承认错误
第2次承认错误
第3次承认错误
第4次承认错误
第5次承认错误
第6次承认错误
for student_name in ['张三' , '李四' , '王五']:
# 把这个学生的姓氏打印出来
print(student_name[0] )
print('-'*30)
运行结果:张------------------------------
李------------------------------
王------------------------------
s = [1,2,3,4,5,6,7,8,9,10]
n = 0
for i in s:
n += i
print(n)
运行结果:55
for循环对字符串遍历
name = '我想去打游戏,不想学习'
for x in name:
print(x*4)
print('-'*30)
for循环使用 else 语句
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, '等于', x, '*', n//x)
break
else:
# 循环中没有找到元素
print(n, ' 是质数')
range函数
如果你需要遍历数字序列,可以使用内置range()函数
。它会生成数列,例如:
for i in range(5):
print(i,end=" ")
运行结果:0 1 2 3 4
for i in range(1,101):
# 判断 当前的 这个i 是不是偶数
if i % 2 == 0: # 说明是偶数
n +=i
print(n)
运行结果:2550
# 可以使用range()函数来创建一个列表
list(range(5))
运行结果:[0, 1, 2, 3, 4]
可以使用range指定区间的值
for i in range(5,9):
print(i,end=" ")
运行结果:5 6 7 8
# 计算0-100之间的和
# 先定一个累加器
n = 0
for i in range(101): # 也可以写成for i in range(1, 101):
# 每次把遍历出来的i + 1 的值 累加到 n 上面去
n += i
print(n)
运行结果:5050
使range以指定数字开始并指定不同的增量
for i in range(0, 10, 3): # 也可以理解为3的倍数
print(i)
运行结果:0 3 6 9
# 甚至可以是负数,有时这也叫做'步长'
for i in range(-10, -100, -30) :
print(i,end=" ")
运行结果:-10 -40 -70
结合range()和len()函数以遍历一个序列的索引
a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
for i in range(len(a)):
print(i, a[i])
运行结果:0 Google
1 Baidu
2 Runoob
3 Taobao
4 QQ
练习
练习一:使用1-100中所有7的倍数的且为偶数的数字打印出来
n = 0
for i in range(1,101):
if (i%7 == 0) and (i%2 == 0):
print(i)
练习二:利用for循环将下面这首诗中的剑,酒,魔几个字替换成X
s = """御剑乘风来,除魔天地间,
有酒乐逍遥,无酒我亦颠,
一饮尽江河,再饮吞日月,
千杯醉不倒,唯我酒剑仙。"""
for i in list(s):
if i == '酒' or i== '剑'or i == '魔':
s = s.replace(i, 'x')
print(s)
# 或者
for i in ['剑','酒','魔']:
s = s.replace(i,'X')
print(s)
break 和 continue 语句
break语句
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
name = '我想要去打游戏,不想学习'
for i in name:
if i == ',':
break
print(i,end="")
运行结果:我想去打游戏
i = 0
while i<10:
i += 1
if i == 5:
break
print(i,end="")
运行结果:1 2 3 4
continue
continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
name = '我想要去打游戏,不想学习'
for i in name:
# 如果遇到了逗号, 就不打印了
if i == ',':
continue
print(i,end="")
运行结果:我想要去打游戏不想学习
scores = [98, 88, 66, 44, 55, 101, 76 ,22]
for score in scores:
if score < 0 or score > 100:
# 分数异常
break
print(score,end=" ")
运行结果:98 88 66 44 55
i = 0
while i<10:
i = i+1
if i==5:
continue
print(i,end=" ")
运行结果:1 2 3 4 6 7 8 9 10
注意:break/continue只能用在循环中,除此以外不能单独使用
break/continue在嵌套循环中,只对最近的一层循环起作用