浙教版必修1《数据与计算》 Python常用基础算法(二)
1
python基础
1、初识Python
print("欢迎来到精彩的Python世界!")
(左右滑动查看)
# 注意输入的括号和引号应是英文字符
print("Hello, Python World!")
(左右滑动查看)
print("2+3=",2+3)
2+3= 5
(左右滑动查看)
name=input("请输入你的姓名:")
print("我的姓名是:",name)
(左右滑动查看)
#编写一个包含以下代码的程序,调试并运行
name=input("请输入你的姓名:")
age=input("请输入你的年龄:")
print("大家好!我叫",name,",今年",age,"岁。")
(左右滑动查看)
2、 常用数据类型
# 字符串是字符的序列表示,由一对引号(单引号或双引号)构成
# 可以通过索引访问字符串中特定位置的字符
st="Python"
print(st[0],st[1],st[2],st[3],st[4],st[5])P y t h o n
type(st) # 查看数据类型
str
(左右滑动查看)
# 列表是包含0个或多个对象的有序序列,
# 用方括号"[]"括起来,并逗号分隔其中的对象(元素)。
# 可以通过索引访问列表中特定位置的元素。
lst=[571,"杭州",572,"湖州",573,"嘉兴"]
print(lst[0],lst[1],lst[2],lst[3],lst[4],lst[5])
571 杭州 572 湖州 573 嘉兴
type(lst)
list
(左右滑动查看)
# 字符串和列表都可以通过切片操作访问其中的一部分序列
lst=['HUAWET','OPPO','VIVO','XIAOMI']
# 返回从索引位置1到索引位置3的子列表,但该子列表不包含索引位置3的元素
lst[1:3]
['OPPO', 'VIVO']
(左右滑动查看)
lst=['HUAWEI','OPPO', 'VIVO', 'XIAOMI']
lst[0][1]
'U'
(左右滑动查看)
# 索引正向从0开始递增,反向从-1开始递减,
st="Python"
st[-1]
'n'
(左右滑动查看)
# 切片操作
# 返回从索引位置start到索引位置end且以step为步数的子序列(不包含索引位置end的元素)。
lst=['HUAWEI','OPPO','VIVO','XIAOMI']
lst[-3:-1]
['OPPO', 'VIVO']
(左右滑动查看)
# 变量命名
#(1)只能包含字母、数字和下划线。注意字母区分大小写。
#(2)不能以数字开头,不能与关键字同名。
a,b,c=3,4,5
msg="三角形的周长是"
p=a+b+c
print(msg,p)
三角形的周长是 12
(左右滑动查看)
# 查看变量类型,计算字符串长度。
a,b=3,'Hello'
type(a)
int
type(b)
strlen(b) # 返回字符串的长度
5
(左右滑动查看)
# 访问列表中的元素,并对列表进行处理
Mphone=['HUAWEI','OPPO','VIVO','XIAOMI']
Mphone[1]
'OPPO'
Mphone[-3]
'OPPO'
Mphone[1::2]
['OPPO', 'XIAOMI']
(左右滑动查看)
3、 算术运算符和表达式
#算术运算符存在优先级别,优先程度最高级别为1,级别数字越大,优先级别越低
#在同一个表达式中,如果有一个及以上的运算符,那么先执行优先级高的运算
#同优先级的算术运算按照自左向右的顺序执行
5+30*20/10
65.0
(左右滑动查看)
9**0.5
3.0
123%10
3
(左右滑动查看)
#得到数123的百、十、个位上的数
123 % 10 #个位上的数字
123//10%10 #十位上的数字
123 //10//10 #百位上的数字
(左右滑动查看)
#温度转换
F=float(input("请输入华氏温度值:")) # 把字符串转换为浮点型数字
C=(5/9)*(F-32)
print("对应的摄氏温度为:",C)
请输入华氏温度值:104
对应的摄氏温度为: 40.0
(左右滑动查看)
float("25")
25.0
#格式化函数format()
#格式:format(value,format_spec)
#功能:将数据value按format_spec格式规范表现形式
x=26.666666666666668
print(format(x,'.2f'))
(左右滑动查看)
#输入一个3位数的自然数,然后依次输出这个数每位上的数字,并用逗号分隔
x = int(input('输入3位数的自然数:'))
a = x//100 #百位上的数字
b=x//10%10
c=x%10 #个位上的数字
print(a,b,c,sep= ',')
输入3位数的自然数:567
5,6,7
(左右滑动查看)
#编程实现将摄氏温度转换为华氏温度
#F=9/5C+k
C = float(input('请输入摄氏温度:'))
F=9/5*C +32
print('对应的华式温度为:',F)
请输入摄氏温度:56
对应的华式温度为: 132.8
(左右滑动查看)
2
Python基本结构
# 顺序结构程序实例
#用海伦公式求解三角形面积
#输入三角形的三边长
a=float(input('输入三角形第一条边长: '))
b=float(input('输入三角形第二条边长: '))
c=float(input('输入三角形第三条边长: '))
# 计算三角形的半周长
p=(a+b+c)/2
# 计算三角形的面积
s=(p*(p-a)*(p-b)*(p-c))**0.5
#输出三角形的面积
print('三角形面积为:',s)
(左右滑动查看)
#计算圆的面积和周长
#根据圆的半径R ,可计算圆的面积S和周长L
R=float(input("请输入圆的半径R:"))
pi=3.14*R*R
L=2*pi*R
print("圆的面积为:",S,",圆的周长为:",L)
(左右滑动查看)
# 分支结构
# 比较两个数a, b , 输出其中较大的数
if a>=b:
print("两个数中较大为:",a)
else:
print("两个数中较大为:",b)
(左右滑动查看)
# Python关系表达式
# 指用关系运算符,连接两个类型相同的数据组成的表达式。
# 关系表达式的值是布尔型:真或假(True或False)
若age =16,则 age>15值为 True, age==15值为False
(左右滑动查看)
# Python逻辑表达式
# 指用逻辑运算符,把逻辑变量连接起来的表达式。
# 逻辑表达式的值仍是布尔型:真或假(True或False)
若age=16,则age>15值为True, age==15值为False
(左右滑动查看)
# Python逻辑表达式
# 指用逻辑运算符,把逻辑变量连接起来的表达式。
# 逻辑表达式的值仍是布尔型:真或假(True或False)
若char="Python", 则"p" in char or "P" in char 值为 True
(左右滑动查看)
# 编写一个登录程序
#需要先知道输入的账号和密码内容
#再校验输入的内容是否正确
#最后显示登录是否成功
#输入账号和密码
user=input("请输入账号:")
pwd=input("请输入密码:")
#判断输入的账号和密码是否正确
if user=="admin" and pwd== "Python@16":
print("登录成功!")
else:
print("账号或密码有误!")
(左右滑动查看)
#出租车计费程序
#某市出租车收费标准如下:3千米以内(含3千米)收费10元
#超过3千米的部分每千米收费2元
#实现输入行驶路程,输出付费金额
#输入路程
s=float(input("请输入行驶路程:"))
if int(s)!=s:
s=round(s+0.5)
#计算金额
if s>3:
m=10+(s-3)*2
else:
m=10
print(s,"千米,","付费",m,"元。")
#注:函数格式:round (number) o
#函数功能:返回浮点数number的四舍五入值。
(左右滑动查看)
#用海伦公式求三角形面积
#实现:输入三条边的长度,先判断能否组成一个三角形
#若能组成三角形,则利用海伦公式计算三角形的面积
#否则显示输入的三条边/不能构成三角形!
# 输入三条边长
a = float(input("输入三角形第一边长: "))
b = float(input("输入三角形第二边长: "))
c = float(input("输入三角形第三边长: "))
#若构成三角形,则求三角形面积
if a+b>c and b+c>a and c+a>b:
p= (a + b + c) / 2
area = (p*(p-a)*(p-b)*(p-c)) ** 0.5
print("三角形面积为:",area)
else:
print("输入的三条边,不能构成三角形!")
(左右滑动查看)
# 多分支结构
# 比较三个数a, b, c , 输出其中最大的数
if a>=b and a>=c:
print("三个数中最大数为:",a)
elif b>=c:
print ("三个数中最大数为:",b)
else:
print ("三个数中最大数为:",c)
(左右滑动查看)
# 多分支结构程序实例
#实现四则运算的简易计算器
x=float(input("请输入第一个运算数:"))
y=float(input("请输入第二个运算数:"))
op=input("请输入算术运算符(+-*/):")
c=0
if op=="+":
c=x+y
print("运算结果为:",c)
elif op=="-":
c=x-y
print("运算结果为:",c)
elif op=="*":
c=x*y
print("运算结果为:",c)
elif op=="/":
try:
c=x/y
print("运算结果为:",c)
except:
print("除数不能为零!")
else:
print("运算符输入有误!")
(左右滑动查看)
# 多分支结构程序实例
#实现四则运算的简易计算器
x=float(input("请输入第一个运算数:"))
y=float(input("请输入第二个运算数:"))
op=input("请输入算术运算符(+-*/):")
c=0
if op=="+":
c=x+y
print("运算结果为:",c)
elif op=="-":
c=x-y
print("运算结果为:",c)
elif op=="*":
c=x*y
print("运算结果为:",c)
elif op=="/":
try:
c=x/y
print("运算结果为:",c)
except:
print("除数不能为零!")
else:
print("运算符输入有误!")
# 捕捉异常可以使用try/except语句。其基本格式为:
'''
try:
正常时执行语句块
except:
异常时执行语句块
'''
# 功能:用来检测try语句块中的错误,从而让 并处理。
(左右滑动查看)
#实现:输入名次,输出得分。
#学校运动会比赛取前六名成绩,其中第一名得7分
#第二名得5分,第三名得4分,第四名得3分,第五名得2分,第六名得1分。
#输入名次
mc=int(input("参加运动会项目名次(1-6):"))
#计算并输出得分
if mc==1:
print("得分为:7分")
elif mc==2:
print("得分为:5分")
elif mc==3:
print("得分为:4分")
elif mc==4:
print("得分为:3分")
elif mc==5:
print("得分为:2分")
elif mc==6:
print("得分为:1分")
else:
print("输入的名次不在1-6范围!")
(左右滑动查看)
# 利用列表实现上例功能。
#输入名次
mc=int(input("参加运动会项目名次(1-6):"))
#利用列表,计算得分
lst=[7,5,4,3,2,1]
if mc>=1 and mc<=6:
df=lst[mc-1]
print("项目得分为:",df)
else:
print("输入的名次不在1-6范围!")
(左右滑动查看)
#汽车牌号所在地查询
chepai=input("请输入汽车牌号首字母:")
if chepai=="A":
print("所在地:杭州市")
elif chepai=="B":
print("所在地:宁波市")
elif chepai=="C":
print("所在地:温州市")
elif chepai=="D":
print("所在地:绍兴市")
elif chepai=="E":
print("所在地:湖州市")
elif chepai=="F":
print("所在地:嘉兴市")
elif chepai=="G":
print("所在地:金华市")
elif chepai=="H":
print("所在地:衢州市")
elif chepai=="J":
print("所在地:台州市")
elif chepai=="K":
print("所在地:丽水市")
elif chepai=="L":
print("所在地:舟山市")
else:
print("无法查询")
(左右滑动查看)
# 空气质量指数(简称AQI) 又称空气污染指数
# 是根据空气中的各种成分占比,将监测的空气浓度简化成为单一的概念性指数值形式
# 它将空气污染程度和空气质量状况分级表示, 适合于表示城市各时段的空气质量状况和变化趋势
# 实现:输入空气质量指数,输出户外活动建议
aqi=float(input("请输入空气质量指数:"))
#判断并输出建议
if aqi>=0 and aqi<=50:
print("空气质量优,各类人群可户外正常活动。")
elif aqi>50 and aqi<=100:
print("空气质量良,少数敏感人群减少户外运动。")
elif aqi>100 and aqi<=150:
print("空气轻度污染,减少长时间户外运动。")
elif aqi>150 and aqi<=200:
print("空气中度污染,应适量减少户外运动。")
elif aqi>200 and aqi<=300:
print("空气质度污染,一般人减少户外运动。")
else:
print("空气严重污染,一般人避免户外运动。")
(左右滑动查看)
# for循环语句
# 是通过遍历某一序列对象来构建循环,循环结束的条件就是对象遍历完成
# for循环语句的一般格式是:
for 变量 in 序列:
循环体
else:
语句块
# for循环的执行流程
# 变量每经过一次循环,就会得到序列中的一个元素,并通过循环体处理它。
# 序列通常是字符串、列表、range对象实例等。
# 当序列中的元素全部遍历完成后,程序就会自动退出循环,继续执行else子句的语句块。
# 遍历是指根据数据之间的逻辑结构,遵循一定的顺序,依次对的所有元素做一次且仅做一次访问。
# 输出字符串"Python3”中的各个字符,可以通过for循环语句实现
# 输出字符串中的各个字符
str="Python3"
for i in str:
print(i)
P
y
t
h
o
n
3
(左右滑动查看)
# 字符串和列表等序列,其所有元素的索引值构成一个数字序列
# range()函数
# 格式:range([start,]stop[,step])o
# 功能:创建一个整数列表。
# 参数:起始值(默认为0), 终值(但不包括),步长(缺省为1)
# 计算1〜100所有奇数的和
# 使用函数range(),起始值为1, 终值为101(或100),步长为2
sum=0
for i in range(1,101,2):
sum=sum+i
print("1~100的所有奇数的和:",sum)
(左右滑动查看)
# 输出列表中的各个元素
lst=["apple","banana","peach"]
n=len(lst)
for index in range(n):
print("当前水果:",lst[index])
当前水果: apple
当前水果: banana
当前水果: peach
(左右滑动查看)
#通过成员资格运算符输出列表元素
program=["Java","Python","Visual Basic"]
for w in program:
print(w,len(w))
Java 4
Python 6
Visual Basic 12
(左右滑动查看)
#通过索引遍历输出列表元素
program=["Java","Python","Visual Basic"]
n=len(program)
for i in range(n):
print(i,program[i])
0 Java
1 Python
2 Visual Basic
(左右滑动查看)
# 国际象棋棋盘上麦粒问题
# 棋盘的第1个小格放1粒麦子,第2个小格放2粒,第3小格放4粒,第4小格放8粒,
# 以此类推直到把64格棋盘放满就行了
# 求得到的麦粒到底是多少呢?
# n表示棋盘的格子数
n=int(input("请输入棋盘格子数:"))
p=1 # 第一格麦粒数p置初值1
s=0 # 累加器s初始化为零
#通过For语句循环累加,并输出麦粒总数
for i in range(1,n+1):
s=s+p
p=p*2
print("棋盘格子数为:",n,",麦粒总数:",s)
请输入棋盘格子数:64
棋盘格子数为: 64 ,麦粒总数: 18446744073709551615
(左右滑动查看)
# 计数器 在算法执行过程中,用来记录某种事件发生次数的变量。
# 1. 计数器的初值通常置为0。
# 2. 循环体中的计数语句格式通常为i=i+l。
# 累加器在算法执行过程中,用来生成并存储数据累加和的变量。
# 1. 累加器的初值通常置为0。
# 2. 循环体中的累加语句格式通常为s=s+x
(左右滑动查看)
# 为了更好呈现麦粒重量和计算过程,可以将麦粒数转化为吨数(按每粒麦子约0.03克计算)
# 并在循环过程中输出每个格子的麦粒数p。
# n表示棋盘的格子数
n=int(input("请输入棋盘格子数:"))
p=1 # 第一格麦粒数p置初值1
s=0 # 累加器s初始化为零
#通过For语句循环累加,并输出每个格子麦粒数
#最后输出麦粒总数,单位换算成吨。
for i in range(1,n+1):
s=s+p
p=p*2
print("当前格子序号:",i,",当前格子麦粒数:",int(p/2))
s=(s*0.03)/(1000*1000)
print("当前格子麦粒总数(吨):",format(s,'.2f'))
请输入棋盘格子数:64
当前格子序号: 1 ,当前格子麦粒数: 1
当前格子序号: 2 ,当前格子麦粒数: 2
当前格子序号: 3 ,当前格子麦粒数: 4
当前格子序号: 4 ,当前格子麦粒数: 8
当前格子序号: 5 ,当前格子麦粒数: 16
当前格子序号: 6 ,当前格子麦粒数: 32
当前格子序号: 7 ,当前格子麦粒数: 64
当前格子序号: 8 ,当前格子麦粒数: 128
当前格子序号: 9 ,当前格子麦粒数: 256
当前格子序号: 10 ,当前格子麦粒数: 512
当前格子序号: 11 ,当前格子麦粒数: 1024
当前格子序号: 12 ,当前格子麦粒数: 2048
当前格子序号: 13 ,当前格子麦粒数: 4096
当前格子序号: 14 ,当前格子麦粒数: 8192
当前格子序号: 15 ,当前格子麦粒数: 16384
当前格子序号: 16 ,当前格子麦粒数: 32768
当前格子序号: 17 ,当前格子麦粒数: 65536
当前格子序号: 18 ,当前格子麦粒数: 131072
当前格子序号: 19 ,当前格子麦粒数: 262144
当前格子序号: 20 ,当前格子麦粒数: 524288
当前格子序号: 21 ,当前格子麦粒数: 1048576
当前格子序号: 22 ,当前格子麦粒数: 2097152
当前格子序号: 23 ,当前格子麦粒数: 4194304
当前格子序号: 24 ,当前格子麦粒数: 8388608
当前格子序号: 25 ,当前格子麦粒数: 16777216
当前格子序号: 26 ,当前格子麦粒数: 33554432
当前格子序号: 27 ,当前格子麦粒数: 67108864
当前格子序号: 28 ,当前格子麦粒数: 134217728
当前格子序号: 29 ,当前格子麦粒数: 268435456
当前格子序号: 30 ,当前格子麦粒数: 536870912
当前格子序号: 31 ,当前格子麦粒数: 1073741824
当前格子序号: 32 ,当前格子麦粒数: 2147483648
当前格子序号: 33 ,当前格子麦粒数: 4294967296
当前格子序号: 34 ,当前格子麦粒数: 8589934592
当前格子序号: 35 ,当前格子麦粒数: 17179869184
当前格子序号: 36 ,当前格子麦粒数: 34359738368
当前格子序号: 37 ,当前格子麦粒数: 68719476736
当前格子序号: 38 ,当前格子麦粒数: 137438953472
当前格子序号: 39 ,当前格子麦粒数: 274877906944
当前格子序号: 40 ,当前格子麦粒数: 549755813888
当前格子序号: 41 ,当前格子麦粒数: 1099511627776
当前格子序号: 42 ,当前格子麦粒数: 2199023255552
当前格子序号: 43 ,当前格子麦粒数: 4398046511104
当前格子序号: 44 ,当前格子麦粒数: 8796093022208
当前格子序号: 45 ,当前格子麦粒数: 17592186044416
当前格子序号: 46 ,当前格子麦粒数: 35184372088832
当前格子序号: 47 ,当前格子麦粒数: 70368744177664
当前格子序号: 48 ,当前格子麦粒数: 140737488355328
当前格子序号: 49 ,当前格子麦粒数: 281474976710656
当前格子序号: 50 ,当前格子麦粒数: 562949953421312
当前格子序号: 51 ,当前格子麦粒数: 1125899906842624
当前格子序号: 52 ,当前格子麦粒数: 2251799813685248
当前格子序号: 53 ,当前格子麦粒数: 4503599627370496
当前格子序号: 54 ,当前格子麦粒数: 9007199254740992
当前格子序号: 55 ,当前格子麦粒数: 18014398509481984
当前格子序号: 56 ,当前格子麦粒数: 36028797018963968
当前格子序号: 57 ,当前格子麦粒数: 72057594037927936
当前格子序号: 58 ,当前格子麦粒数: 144115188075855872
当前格子序号: 59 ,当前格子麦粒数: 288230376151711744
当前格子序号: 60 ,当前格子麦粒数: 576460752303423488
当前格子序号: 61 ,当前格子麦粒数: 1152921504606846976
当前格子序号: 62 ,当前格子麦粒数: 2305843009213693952
当前格子序号: 63 ,当前格子麦粒数: 4611686018427387904
当前格子序号: 64 ,当前格子麦粒数: 9223372036854775808
当前格子麦粒总数(吨): 553402322211.29
(左右滑动查看)
寻找水仙花数。水仙花数是指一个三位数,它每个数位上的数的3次幂
之和等于它本身。例如:153是水仙花数,因为1**3+5**3+3**3=153。
lst=[] #初置空列表
for i in range(100,1000):
a=i%10 #个位
b=(i//10)%10 #十位
c=i//100 #百位
if (a**3+b**3+c**3)==i:
lst.append(i)
print(lst)
(左右滑动查看)
# 输入多个数,输出这些数的和
# 由于在输入数据之前,不知道输入多少次,因此用while循环语句来实现。
# 计数器和累加器置初值0
s=0
i=0
# 输入需循环计算的数,并给出结束循环的条件
xstr=input("请输入数【直接回车则退出】:")
while xstr!="":
x=float(xstr)
s=s+x
i=i+1
xstr=input("请输入数【直接回车则退出】:")
print("\n输入个数为:",i)
print("输入数和为:",format(s,".2f"))
请输入数【直接回车则退出】:92
请输入数【直接回车则退出】:88
请输入数【直接回车则退出】:85
请输入数【直接回车则退出】:89
请输入数【直接回车则退出】:76
请输入数【直接回车则退出】:
输入个数为: 5
输入数和为: 430.00
(左右滑动查看)
# 1. break语句
# 功能:跳出当前循环,不再判断执行循环的条件是否成立。
# 2. continue 语句
# 功能:结束当前的当次循环,但不跳出当前循环,继续判断执行循环的条件是否成立。
(左右滑动查看)
#输入账号和密码都正确,退出循环。
user=""
psd=""
while True:
if user!="admin":
user=input("请输入账号:")
continue
psw=input("请输入密码:")
if psw=="Python@16":
break
print("帐号和密码正确,登录成功!")
请输入账号:abc
请输入账号:user
请输入账号:admin
请输入密码:Python@16
请输入密码:python@16
帐号和密码正确,登录成功!
(左右滑动查看)
x=0
while x<50:
x=(x+2)*(x+3)
print(x)
72
(左右滑动查看)
x=0
while x<10:
x=x+1
if x%2==0:
continue
print(x)
1
3
5
7
9
(左右滑动查看)
# 猜数游戏
num=66 #给定的具体数为66
i=0 #计数器初始置0
#循环猜数
while True:
guess=int(input("请输入猜测数:"))
if guess<num:
print("偏小")
i=i+1
elif guess>num:
print("偏大")
i=i+1
else:
print("正确,共猜测次数:",i+1)
break
请输入猜测数:30
偏小
请输入猜测数:55
偏小
请输入猜测数:65
偏小
请输入猜测数:66
正确,共猜测次数: 4
(左右滑动查看)
# 储蓄问题。已知某同学有一些零用钱,他想通过银行储蓄增值。
# 问:存多少年,才能达到预期的数额?
# 储蓄规则:
# (1) 存期以一年为单位,存款以元为单位。
# (2) 一年期的存款利率均为3% (不考虑利率调整)。
# 储蓄年数n置初值0
n=0
# p是本金金额
p=float(input('请输入本金金额:'))
# q是预期数额
q=float(input("请输入预期数额:"))
q=2*p
while
p=p+p*0.03
n+=1 # 等价于n=n+1
print("需要储蓄(年数):",n)
(左右滑动查看)
# 储蓄年数n置初值0
n=0
# p是本金金额
p=float(input('请输入本金金额:'))
# q是预期数额
q=float(input("请输入预期数额:"))
while p<q:
p=p+p*0.03
n+=1 # 等价于n=n+1
print("需要储蓄(年数):",n)
请输入本金金额:1000
请输入预期数额:5000
需要储蓄(年数): 55
(左右滑动查看)
3
算法与程序设计
# 1.定义函数
# def 函数名 (参数列表):
函数体
return 返回值
# 2. 调用函数
函数名(参数列表)
#定义printinfo函数
def printinfo(name,age):
print("Name:",name)
print("Age:",age)
#调用printinfo函数
printinfo("miki",50)
printinfo(age=50,name="miki")
Name: miki
Age: 50
Name: miki
Age: 50
# 1.定义函数
# def 函数名 (参数列表):
函数体
return 返回值
# 2. 调用函数
函数名(参数列表)
#定义printinfo函数
def printinfo(name,age):
print("Name:",name)
print("Age:",age)
#调用printinfo函数
printinfo("miki",50)
printinfo(age=50,name="miki")
Name: miki
Age: 50
Name: miki
Age: 50
(左右滑动查看)
# 斐波那契数列问题
# 假设某人买了一对小兔子,这对小兔子从第三个月开始,每个月都会生一对小兔子
# 而所有的小兔子到了第三个月又会每月生一对小兔子
# 问:第n个月会有多少对兔子?
#定义fib()函数,x为形参
def fib(n):
a,b=1,1
for i in range(3,n+1):
a,b=b,a+b
return b
#输入月数
n=int(input('请输入第n个月:'))
#调用fib()函数,i值为实参
for i in range(1,n+1):
print(fib(i), end=' ')
请输入第n个月:6
1 1 2 3 5 8
(左右滑动查看)
# 计算给定日期是该年的第几天
#定义函数fcount()
def fcount(year,month,day):
sum=0
#判断该年是否为闰年
if year%400==00 or (year%4==0 and year%100!=0):
lst=[31,29,31,30,31,30,31,31,30,31,30,31]
for i in range(month-1):
sum=sum+lst[i]
return sum+day
else:
lst=[31,28,31,30,31,30,31,31,30,31,30,31]
for i in range(month-1):
sum=sum+lst[i]
return sum+day
#输入年月日
year=int(input("请输入年份:"))
month=int(input("请输入月份:"))
day=int(input("请输入日期:"))
#调用函数fcount(),并输出天数
sum=fcount(year,month,day)
print(year,"年",month,"月",day,"日","是今年的第",sum,"天!")
请输入年份:2022
请输入月份:12
请输入日期:31
2022 年 12 月 31 日 是今年的第 365 天!
(左右滑动查看)
# 模块是用来把函数、变量,以及其他东西组织成更大的、更强的程序
# Python提供了大量模块,有些模块内置在Python之中,如用于数学计算的模块math
# 有些模块需要单独下载,如用于科学计算的模块numpy、pandas、matplotlib
# 在Python中,模块分为以下几种:
# 1. 系统内置模块:如math、random、time等。
# 2. 自定义模块:自定义模块是用户编写的模块,对某段逻辑或某些函数进行封装后,供其他程序调用。
# 3. 第三方的开源模块:如numpy、matplotlib等,可以通过pip install进行安装后调用。
# 导入整个模块文件,使用模块中的函数
import 模块 as 别名
模块.函数名
# 导入模块中的指定函数,直接使用该函数
from 模块 import 函数名
函数名()
(左右滑动查看)
# 程序实例:求圆周率π的值1
import random
import math
num=20000 #投点次数
point=0
for i in range(1,num+1):
x,y=random.random(),random.random()
dist=math.sqrt(x**2+y**2)
if dist<=1.0:
point=point+1
pi=4*(point/num)
print("Pi的值是:",pi)
Pi的值是: 3.1374
(左右滑动查看)
# # 程序实例:求圆周率π的值2
from random import random
from math import sqrt
from time import perf_counter
num=20000 #投点次数
point=0
start=perf_counter()
for i in range(1,num+1):
x,y=random(),random()
dist=sqrt(x**2+y**2)
if dist<=1.0:
point=point+1
pi=4*(point/num)
end=perf_counter()
js=end-start
print("Pi的值是:",pi)
print("共用时间:",js)
Pi的值是: 3.1556
共用时间: 0.01850940000000001
(左右滑动查看)
# # 程序实例拓展:求PI的彩色截图
# PI-pro3.py
import numpy as np;
import matplotlib.pyplot as plt;
from matplotlib.patches import Circle;
# 投点次数
n = 5000;
# 圆的信息
r = 1.0 ; # 半径
a, b = (0., 0.); # 圆心
# 正方形区域边界
x_min, x_max = a-r, a+r;
y_min, y_max = b-r, b+r;
# 在正方形区域内随机投点
x = np.random.uniform(x_min, x_max, n) ;# 均匀分布
y = np.random.uniform(y_min, y_max, n);
# 计算 点到圆心的距离
d = np.sqrt((x-a)**2 + (y-b)**2);
# 统计 落在圆内的点的数目
ind = np.where(d <= r, 1, 0);
res = sum(ind);
# 计算 pi 的近似值(Monte Carlo方法的精髓:用统计值去近似真实值)
pi = 4 * res / n;
print('pi: ', pi);
# 画个图看看,画图比较耗费时间
fig = plt.figure() ;
axes = fig.add_subplot(111) ;
axes.set_title('PI is: %f' %pi); # 在图中标题栏显示计算的 PI值
for i in range(len(ind)):
if ind[i] == 1:
axes.plot(x[i], y[i],'ro',markersize = 2,color='r'); # 圆内一种颜色
else:
axes.plot(x[i], y[i],'ro',markersize = 2,color='g'); # 圆外另一种颜色
plt.axis('equal'); # 防止图像变形
circle = Circle(xy=(a,b), radius=r, alpha=0.5);
axes.add_patch(circle);
plt.show();
(左右滑动查看)
# 移位程序实现
# 首先,自定义函数left(), 并保存到模块文件move.py
# 模块文件move.py
#将列表循环左移K位
def left(lst,k):
temp=lst
for i in range(k):
temp.append(temp.pop(0))
return temp
# 然后,新建"列表元素的循环左移”文件lst_move.py
import move
p=[1,2,3,4,5,6]
n=3
print(move.left(p,n))
# 列表添加和删除元素方法:
# 格式:list.append(obj)
# 功能:在列表末尾添加新的对象。
# 格式:list.pop(index)
# 功能:移除列表中的一个元素(默认是最后一个元素),并返回该元素的值。
(左右滑动查看)