经典入门算法

本文介绍了四个Python算法实现:1)通过年份判断闰年和平年;2)输出指定行数的杨辉三角;3)计算无重复数字的三位数组合;4)找到加上特定数值成为完全平方数的整数。这些算法展示了基础的数学逻辑和编程技巧。
摘要由CSDN通过智能技术生成

算法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,"天") # 需要加上输入的天数

算法6:

算法7:

算法8:

算法9:

算法10:

算法11:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踢足球没有假动作

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值