- 零 前言
- 一 python3 基础题目
- 1 题目:斐波那契数列
- 1.2 题目:(斐波那契数列) 兔生兔
- 2 题目:输出 9*9 乘法口诀表
- 3 题目:格式化当前时间
- 4 题目: 排列组合
- 5 题目:某年某月某日,日期换算
- 5.1 输入某年某月某日,判断这一天是这一年的第几天?
- 5.2 题目:输入某年某月某日,判断这一天是星期几?
- jupyter 版本
- 环境:win10、pycharm、python3.8、(jupyter notebook)
- -2021年10月20首发
- 千山踏飞雪,秋水共长天
斐波那契数列(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) print(fibonacci(5)) print(fibonacci(6))1.2 题目:(斐波那契数列) 兔生兔
(斐波那契数列)有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第16个月的兔子总数为多少?
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)
print("第%d月的兔子总数为%d"%(m, total_rabbit))
2 题目:输出 9*9 乘法口诀表
# 分行与列考虑,共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()
3 题目:格式化当前时间
import time time_format = "%Y-%m-%d %H:%M:%S" print (time.strftime(time_format,time.localtime(time.time())))4 题目: 排列组合
有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
#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))
扩展版(待补充)
如果是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):
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))5 题目:某年某月某日,日期换算 5.1 输入某年某月某日,判断这一天是这一年的第几天?
# 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
print("{}年{}月{}日是{}的第{}天".format(year,month,day,year, total))
# python >=3.8,可以使用以下的字符串格式方法
#print(f"{year}年{month}月{day}日是{year}的第{total}天")
5.2 题目:输入某年某月某日,判断这一天是星期几?
(公元1年1月1日是星期一, 基姆拉尔森计算公式)
# 第一组测试数据
# 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
print("{}年{}月{}日是{}的第{}天".format(year,month,day,year, weeks_zh[week]))
jupyter 版本
gitee



