一、循环的else分支
# 1.pass # 占位语句,没有实际意义,只是为了保证代码结构的完整性,后期会用实际有意义的的代码代替掉 # if 1: # pass # print('ga') # 2.循环中的else """ while xxx: pass else: pass for 变量 in 容器: pass else: pass """ # a.注意1:当循环中没有break语句的时候,循环执行完毕之后,else代码块最后都会被执行,不常用,没有意义 n = 1 while n <= 5: print(n) n += 1 else: print("else被执行了") for i in range(1,6): print(i) else: print('for~~~~else') print("*" * 50) # b.注意2:当循环中有break语句且break语句会被执行,则else不会被执行 ****** # 如果break执行,则else不执行;如果break不执行,则else会执行 n = 1 while n <= 5: print(n) if n == 10: break n += 1 else: print("else被执行了") for i in range(1,6): print(i) if i == 10: break else: print('for~~~~else')
# c.
# 练习1:从控制台输入一个数,判断该数是否是质数
# 质数【素数】:只能被1或它本身整除的数,最小的质数为2
# 方式一:break和循环的else ******
num = input("请输入一个数:")
if num.isdigit():
num = int(num) # 非负数
if num < 2:
print(f"{num}不是质数")
else:
# num >= 2
# 思路:判断10是否是质数,只需要在2~9之间找到一个数,能整除10,则说明10不是质数
for n in range(2,num):
if num % n == 0: # 整除
print(f"{num}不是质数")
# 得到结论,可以提前结束循环
break
else:
print(f"{num}是质数")
else:
print("输入有误")
# 方式二:统计整除的数的个数
num = input("请输入一个数:")
if num.isdigit():
num = int(num) # 非负数
if num < 2:
print(f"{num}不是质数")
else:
count = 0
for n in range(1,num + 1):
if num % n == 0:
count += 1 # 统计能整除num的数的个数
if count == 2:
print(f"{num}是质数")
else:
print(f"{num}不是质数")
else:
print("输入有误")
# 方式三:假设法
num = input("请输入一个数:")
if num.isdigit():
num = int(num) # 非负数
if num < 2:
print(f"{num}不是质数")
else:
result = True
for n in range(2,num):
if num % n == 0:
result = False
break
if result:
print(f"{num}是质数")
else:
print(f"{num}不是质数")
else:
print("输入有误")
# 练习2:统计101~200中质数的个数,并且输出所有的质数
# 方式一
count = 0
for num in range(101,201):
for n in range(2, num):
if num % n == 0:
break
else:
count += 1
print(f"{num}是质数")
print(count)
# 方式二
count = 0
for num in range(101,201):
result = True
for n in range(2, num):
if num % n == 0:
result = False
break
if result:
count += 1
print(f"{num}是质数")
print(count)
二、数字类型
1.数学功能
内置功能
abs(x):返回数字的绝对值
(x>y)-(x<y):比较大小,如:x=3,y=5
max(x1,x2,…):返回给定参数的最大值
min(x1,x2,…):返回给定参数的最小值
pow(x,y):求x的y次方的值
round(x,n):返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数
导入math模块 import math;
ceil(x):返回x的上入整数,不能直接访问,需要通过math访问,即math.ceil(18.1)
floor(x):返回x的下入整数,同ceil的用法
modf(x):返回x的整数部分和小数部分,两部分的数值符号与x相同,整数部分以浮点型表示,同ceil的用法
sqrt(x):返回数字x的平方根,数字可以为负数,返回类型为实数【浮点型】,同ceil的用法
数学常量
math.pi :圆周率 math.e :自然常数
# 一、内置功能 # 1.abs() print(abs(-34)) # 2.max()/min() ***** print(max(34,6,674,6,61,9)) print(min(34,6,674,6,61,9)) # 3.pow(x,y)等价于x ** y print(pow(5,3)) print(5 ** 3) # 4.round(x,n):获取浮点数x的四舍五入的值,n表示保留小数点后n位 ***** print(round(10.589)) print(round(10.389)) print(round(10.589,2)) print(round(10.389,1)) # 5.(x>y)-(x<y):比较大小,如:x=3,y=5 # 工作原理:如果结果是-1,则表示y较大,如果结果是1,则表示x较大,如果结果是0,则表示x和y相等 x = 5 y = 3 print((x>y)-(x<y)) # 6.sum(数字容器):求和 ***** print(sum([2,3,4])) print(sum(range(1,101))) # 二、math模块 # 注意:创建py文件的时候,文件名字一定不要使用系统模块名 import math # 注意:向上取整和向下取整不涉及四舍五入 # 1.ceil() ***** print(math.ceil(10.987)) print(math.ceil(10.187)) # 2.floor() ***** print(math.floor(10.987)) print(math.floor(10.187)) # 3.sqrt(x),求x的算术平方根,而且结果是浮点数 print(math.sqrt(36)) # 4.常量 print(math.pi) # 圆周率 print(math.e) # 自然常数
2.随机数功能
import random # 1.choice(容器) ******* r1 = random.choice("abcd") print(r1) r1 = random.choice([3,5,6,7]) print(r1) r1 = random.choice(range(100)) # 0~99 print(r1) # 2.randint(start,end),注意:step默认为1,无法自定义 **** r2 = random.randint(1,100) # 1~100 print(r2) # 3.randrange(start,end,step),类似range(start,end,step),start和step都可以省略 r3 = random.randrange(100) print(r3) # 练习1:获取10~100之间的任意一个整数随机数 print(random.choice(range(10,101))) # 包头不包尾 print(random.randint(10,100)) # 闭区间 print(random.randrange(10,101)) # 包头不包尾 # 练习2:获取10~100之间的任意一个偶数随机数 print(random.choice(range(10,101,2))) print(random.randrange(10,101,2)) # 4.sample(容器,n) ****** # 作用:从指定的容器中随机选择n个数据,得到的结果是一个列表 # 注意:容器中的数据是被一次性取出来的,所以同一个数据只能被提取一次 r4 =random.sample('abcd1234',3) print(r4) r4 =random.sample([34,56,67,7,8,99],2) print(r4) r4 =random.sample(range(100),3) print(r4) # 5.random():获取0~1之间的任意一个随机浮点数,[0,1)前闭后开区间 ***** r5 = random.random() print(r5) # 6.uniform(a,b):获取a~b之间的任意一个随机浮点数,底层还是通过random()进行计算的 ****** r6 = random.uniform(10,100) print(r6) # 练习3:获取20~100之间的任意一个浮点数随机数 print(random.uniform(20,100)) # [0,1)----》[0,80)----》[20,100) print(random.random() * 80 + 20)
三、列表
1.概念
普通变量:使用变量存储数据,但是,缺点:一个变量每次只能存储一个数据 ,num = 10 name = "aaa"
思考:如果一次性存储多个数据,怎么做?
实际问题:定义5个人的年龄,求他们的平均年龄,按照以前的方式解决:
age1 = 10 age2 = 18 age3 = 9 age4 = 15 age5 = 20 average = (age1 + age2 + age3 + age4 + age5) / 5继续思考:如果要存储100,甚至1000个人的年龄呢?
解决方案:此时采用定义普通变量的方式会显得很麻烦,而Python提供了一种解决方案,使用列表进行多个数据的存储
作用:列表相当于是一个容器,可以同时存储多种类型的数据
本质:列表是一个有序的,可以存储重复元素的集合
说明:有序指的就是有顺序【数据的存放的顺序和底层存储的顺序是相同的】
agelist = [10,18,9,15,20] average = sum(agelist) / len(agelist)
2.基本使用
2.1定义列表
定义一个列表相当于定义一个列表类型的变量
变量名 = 值
语法:列表名 = [数据1,数据2,数据3.......]
说明:
a.列表名其实就是一个变量名【标识符】,注意:尽量不要直接使用list【系统有一个功能list(x)】,使用listxxx
b.[]是列表特有的表示方式
c.数据1,数据2,数据3被称为元素
d.列表中的元素会被自动编号,从0开始,该编号被称为索引,下标或者角标
e.索引的取值范围:0 ~ (元素个数 - 1)
-1 ~ -元素个数
# 1.空列表 # 注意1:列表变量的命名不要使用list,因为list是一个关键字 list1 = [] print(list1) print(type(list1)) # 2.非空列表 # a. # 注意2:列表中允许存储重复元素 list1 = [2,3,3,4,4,4,4] print(list1) # b. # 注意3:列表是有序的【数据的存放的顺序和底层存储的顺序是相同的】 list2 = [34,6,8,9,90,0] print(list2) # c. # 注意4:列表中可以存储不同类型的数据 list3 = [345,'abc',True,2.4] print(list3) # d. # 注意5:列表是可变的 list3[0] = 666 print(list3)
2.2列表元素访问
# 注意1:因为列表是有序的,所以列表可以通过索引访问元素 # 1.获取元素 # 语法:列表[索引] numlist = [45,56,65,100,2,15] print(len(numlist)) # 获取列表中元素的个数 """ 正数索引:0 1 2 3 4 5 负数索引:-6 -5 -4 -3 -2 -1 元素: 45 56 65 100 2 15 索引的取值范围: a.正数索引:0~len(xx) - 1 b.负数索引:-1 ~ -len(xx) """ print(numlist[1]) print(numlist[-5]) print(numlist[-1]) print(numlist[5]) # 注意:访问列表中元素的时候,一定要注意索引的取值范围,如果越界,则报错IndexError # print(numlist[10]) # IndexError: list index out of range # print(numlist[-7]) # IndexError: list index out of range # 2.修改元素 # 语法:列表[索引] = 值 print(numlist) numlist[-1] = 33 print(numlist)
2.3列表基本操作
# 1.+:组合 l1 = [1,2,3] l2 = [6,7,8] print(l1 + l2) # [1, 2, 3, 6, 7, 8] print(l2 + l1) print(l1) print(l2) # 2.* print(l1 * 3) # [1, 2, 3, 1, 2, 3, 1, 2, 3] print(l1) # 注意:+和*应用在列表中,都是生成了一个新的列表,并没有修改原列表 # 3.in和not in:判断指定的元素是否在指定的列表中,一般和if语句结合使用 numlist = [11,22,33] print(11 in numlist) # True print(11 not in numlist) # False print(66 in numlist) # False print(66 not in numlist) # True