算法练习题收集 — 采用Python3实现
算法1:闰年平年问题🎈
思路:能被4整除,不能被100整除;能被400整除。
year_temp = input("请输入要判断的年份:")
year = int(year_temp)
# 上面两条语句可以合在一起, 出来直接就是int型
# year = int(input("请输入要判断的年份:"))
if (year%4==0 and year%100!=0) or (year% 400 ==0):
print("是闰年")
else:
print("不是闰年,是平年")
算法2: 杨辉三角问题
输入行数,输出规定行数的杨辉三角
思路:下面的值等于上面两个相加
算法3:数字组合✨
有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
思路:程序分析 遍历全部可能,把有重复的剃掉。
count = 0 # 计算能组成的数字个数
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if((i!=j)and(i!=k)and(j!=k)):
print(i*100+j*10+k)
count+=1
print("能组成",count,"个三位数")
注:问的是能组成多少个三位数,不是三个一位数
算法4:完全平方数🎋
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
解析:这个是一个完全平方,并不一定是原来那个数的完全平方可能是其他数字的完全平方。
思路原文:https://www.cnblogs.com/jackzz/p/9125275.html
# 做法1 ---最简洁算法
# 列表推导式
[print(x**2-100, end = ',') for x in range(1000) for y in range(1000) if (y**2 - x**2 == 168)]
# 展开后
for x in range(1000):
for y in range(1000):
if (y**2 - x**2) == 168:
print(x**2-100, end = ',')
# 做法2 --采用通俗易懂的方法
import math
for i in range(10000):
x = math.sqrt(i + 100)
if x == math.floor(x):
y = math.sqrt(x**2 + 168)
if y == math.floor(y):
print(i)
算法5:这天第几天🎀
输入某年某月某日,判断这一天是这一年的第几天?
程序分析:注意考虑闰平年的问题,闰年要比平年的二月多加一天
def JudgeYear(y):# 判断闰平年
return ((y%400==0)or((y%4 == 0)and(y%100!=0)))
num = 0;
M = [0,31,28,31,30,31,30,31,31,30,31,30] # 用于每个月
year = int(input("Year:"))
month = int(input("Month:"))
day = int(input("Day:"))
if JudgeYear(year):
M[2]+=1;
for i in range(month):
num +=M[i] # 加上输入的月份之前的日期
print("这是这一年的第",num+day,"天") # 需要加上输入的天数