python实例练习

匿名 (未验证) 提交于 2019-12-02 22:51:30
year = int(input('请输入一个年份:'))  if(((year % 4 == 0) and (year % 100 != 0))or(year % 400 == 0)):     print("{0}是闰年".format(year)) else:     print("{0}不是闰年".format(year))
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,'个素数')

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

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)))

斐波那契数列指的是这样一个数列 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 = ' ')
文章来源: python实例练习
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!