python实例练习

Python 判断闰年

year = int(input('请输入一个年份:'))

if(((year % 4 == 0) and (year % 100 != 0))or(year % 400 == 0)):
    print("{0}是闰年".format(year))
else:
    print("{0}不是闰年".format(year))

python质数判断

num = int(input('请输入一个数:'))

if num > 1:
    for i in range(2, num):
        if(num % i == 0):
            print(num,"不是质数")
            print(i,"乘以",num // i,"是",num)
            break
    else:
        print(num,"是质数")

else:
    print(num,"不是质数")

时间复杂度较高,在判断一个大数是质数还是合数的情况下,应该在查看因子那里的循环中使用到平方根,代码如下:

import math

num = int(input('请输入一个数:'))

if num > 1:
    square_num = math.floor(num ** 0.5)
    for i in range(2, (square_num + 1)):
        if(num % i == 0):
            print(num,"不是质数")
            print(i,"乘以",num // i,"是",num)
            break
    else:
        print(num,"是质数")
else:
    print(num,"不是质数")

原理是用了开根号法:
假如一个数N是合数,它有一个约数a,那么有a×b=N,则a、b两个数中必有一个大于或等于根号N,一个小于或等于根号N。因此,只要小于或等于根号N的数(1除外)不能整除N,则N一定是素数。

import math

# 输出指定范围内的素数
# 用户输入范围
lower = int(input("输入区间最小值: "))
upper = int(input("输入区间最大值: "))
print("素数结果如下:")
print("="*10)
pri_num = 0
com_num = 0
for num in range(lower, upper + 1):
    # 找到其平方根( √ ),减少算法时间
    square_num = math.floor(num ** 0.5)
    # 素数大于 1
    if num > 1:
        for i in range(2, (square_num + 1)):
            if (num % i) == 0:
                com_num += 1
                break
        else:
            pri_num += 1
            print(num)
print("="*10)
print(com_num,'个合数')
print(pri_num,'个素数')

上述代码根据用户指定区间来输出素数的个数。

Python 阶乘实例

num = int(input("请输入一个数字:"))
factorial = 1

if num < 0:
    print('负数没有阶乘')
elif num ==0:
    print('0的阶乘为1')
else:
    for i in range(1,num + 1):
        factorial = factorial * i
    print("%d 的阶乘是 %d"%(num,factorial))

math库中自带阶乘,代码修改如下:

import math
num = int(input("请输入一个数字:"))
if num < 0:
    print("负数是没有阶乘的!")
else:
    print("{0} 的阶乘为 {1}".format(num, math.factorial(num)))

九九乘法表

for i in range(1, 10):
    for j in range(1, i + 1):
        if i == j:
            print('{1}×{0}={2}'.format(i, j, i * j))
        else:
            print('{1}×{0}={2}'.format(i, j, i * j), end='\t')

将上述代码段用一行代码实现:

print('\n'.join(' '.join("%dx%d=%-2d" % (x, y, x*y) for x in range(1, y+1)) for y in range(1, 10)))

Python 斐波那契数列

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。

# 获取用户输入数据
nterms = int(input("你需要几项?"))

# 第一和第二项
n1 = 0
n2 = 1
count = 2

# 判断输入的值是否合法
if nterms <= 0:
   print("请输入一个正整数。")
elif nterms == 1:
   print("斐波那契数列:")
   print(n1)
else:
   print("斐波那契数列:")
   print(n1,",",n2,end=" , ")
   while count < nterms:
       nth = n1 + n2
       print(nth,end=" , ")
       # 更新值
       n1 = n2
       n2 = nth
       count += 1

递归实现

def fab(n):
    if n == 1:
        return 0
    if n == 2:
        return 1
    if n > 2:
        return fab(n-1) + fab(n-2)

def printfablist(n):
    for i in range(1, n+1):
        print(fab(i),end = ' ')
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值