代码拉取完成,页面将自动刷新
# 零 前言
- 环境:win10、pycharm、python3.8、(jupyter notebook)
- -2021年10月18首发
- 千山踏飞雪,秋水共长天
斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。 在数学上,费波那契数列是以递归的方法来定义 F0 = 0 (n=0) F1 = 1 (n=1) Fn = F[n-1]+ Fn-2
# 使用递归方法
# 递归两要素:1、递归终止条件;2、递归函数
def fibonacci(n):
if n == 1 or n == 0:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
fibonacci(5)
5
def fibonacci(n):
if n == 1 or n == 0:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
m = 16
total_rabbit = 0
for i in range(1, m + 1):
total_rabbit += fibonacci(m)
"第%d月的兔子总数为%d"%(m, total_rabbit)
'第16月的兔子总数为15792'
# 分行与列考虑,共9行9列,i控制行,j控制列。
for i in range(1, 10):
for j in range(1, i + 1):
print("%d*%d=%d" % (i, j, i*j), end=" " )
print()
1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
import time
time_format = "%Y-%m-%d %H:%M:%S"
print (time.strftime(time_format,time.localtime(time.time())))
2021-10-20 17:02:10
#range(1,5) = [1, 2, 3, 4]
# 暴力版
# 排列组合直观思路: 第一次 4取一; 第二次3取一,第三次2取1
for num in range(1,5):
for num2 in range(1,5):
if num == num2:
continue
for num3 in range(1,5):
if num3 == num2 or num3 == num:
continue
print(str(num) + str(num2) + str(num3))
123 124 132 134 142 143 213 214 231 234 241 243 312 314 321 324 341 342 412 413 421 423 431 432
扩展版(待补充) 如果是1到9 9个数字组成7位数呢?难道要写7层循环,显然不是很明智
total = 7
def joinNums(nums):
strs = [str(item) for item in nums]
return "".join(strs)
a = 1
b = 4
total = 3
for j in range(a, b + 1):
File "<ipython-input-7-5dc4927b7f02>", line 8 for j in range(a, b + 1): ^ SyntaxError: unexpected EOF while parsing
python工具包itertools
from itertools import permutations # 自带的排列工具包
def joinTupleNums(nums):
'''
将元组数据 格式化输出
:param nums: (1, 2, 3)
:type nums: 元组
:return: 123
:rtype: str
'''
strs = [str(item) for item in nums]
return "".join(strs)
for item in permutations(range(1, 5), 3):
print(joinTupleNums(item))
123 124 132 134 142 143 213 214 231 234 241 243 312 314 321 324 341 342 412 413 421 423 431 432
# 2021年10月15日
months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 平年12月
weeks = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
weeks_zh = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]
def isLeapYear(year):
'''
:param year: 判断year是否为闰年
:type year: int
:return: 是闰年返回true
:rtype: bool
'''
if (year % 4 == 0 and year % 100 !=0) or year % 400 == 0:
return True
return False
# 第一组测试数据
# year = 2021
# month = 9
# day = 1
# 第二组测试数据
# year = 2021
# month = 10
# day = 15
year = int(input("请输入年份(如2021)"))
month = int(input("请输入月份(如:1)"))
day = int(input("请输入日期(如:1)"))
total = day
for i in range(0, month):
total += months[i]
# total += sum(months[:month - 1])
if isLeapYear(year):
total += 1
请输入年份(如2021)2021 请输入月份(如:1)10 请输入日期(如:1)20
f"{year}年{month}月{day}日是{year}的第{total}天"
'2021年10月20日是2021的第324天'
# 第一组测试数据
# year = 2021
# month = 9
# day = 1
# 第二组测试数据
# year = 2021
# month = 10
# day = 15
year = int(input("请输入年份(如2021)"))
month = int(input("请输入月份(如:1)"))
day = int(input("请输入日期(如:1)"))
week=(day+2*month+int(3*(month+1)/5)+year+int(year/4)-int(year/100)+int(year/400)+1)%7
请输入年份(如2021)2021 请输入月份(如:1)10 请输入日期(如:1)20
"{}年{}月{}日是{}的第{}天".format(year,month,day,year, weeks_zh[week])
'2021年10月20日是2021的第星期三天'
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。