Python常用练习小例子

Python常用练习小例子

1、输出九九乘法表

使用for循环源码如下:

# 九九乘法表
for i in range(1, 10):
    for j in range(1, i+1):
        print('{}x{}={}\t'.format(i, j, i*j), end='')
    print() # 换行,相当于print(end='\n')

其中,rint('{}x{}={}\t'.format(i, j, i*j), end='')  可改为 print ("%dx%d=%d\t" % (i, j, i*j), end='')

运行效果:

关于Python的输入函数input()和输出函数print() 可参见https://blog.csdn.net/cnds123/article/details/118638607

也可以使用while 循环实现,源码如下:

i = 1
while i <= 9:
    j = 1
    while j <= i:
        print("%dx%d=%d\t"%(i,j,i*j),end = '')  
        j += 1
    print()
    i += 1

 2、判断用户输入的年份是否为闰年

不是整百的年份只要被4整除的就是闰年,整百的年份必须得被400整除才是闰年。

源码如下:

year = int(input("输入一个年份: "))
if (year % 4) == 0:
   if (year % 100) == 0:
       if (year % 400) == 0:
           print("{0} 是闰年".format(year))   # 整百年能被400整除的是闰年
       else:
           print("{0} 不是闰年".format(year))
   else:
       print("{0} 是闰年".format(year))       # 非整百年能被4整除的为闰年
else:
   print("{0} 不是闰年".format(year))
   

3、斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
在数学上,费波那契数列是以递归的方法来定义:
F0 = 0     (n=0)
F1 = 1    (n=1)
Fn = F[n-1]+ F[n-2](n=>2) 即从第三项开始,每一项都等于前两项之和。

法一、采用递归

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

#递归
def fib(n):
    if n == 1:
        return [1]
    if n == 2:
        return [1, 1]
    fibs = [1, 1]
    for i in range(2, n):
        fibs.append(fibs[-1] + fibs[-2])
    return fibs

# 判断输入的值是否合法
if nterms <= 0:
   print("请输入一个正整数。")
else:
   print (fib(nterms)) 

法二、不用递归

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

#不用递归
#求第n项(n>2)
def fn(n):
    a,b = 1,1
    for i in range(n-1):
        a,b = b,a+b
    return a

def fib(n):
    if n == 1:
        return [1]
    if n == 2:
        return [1, 1]
    fibs = [1, 1]
    for i in range(2, n):
        fibs.append(fn(nterms))
    return fibs

# 判断输入的值是否合法
if nterms <= 0:
   print("请输入一个正整数。")
else:
   print (fib(nterms)) 

4、将一个正整数分解质因数

对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

程序源代码如下:

# 获取用户输入数据
N = int(input("请输入一个正整数:"))

def reduceNum(n):
    print ('{} = '.format(n), end=" ")
    if not isinstance(n, int) or n <= 0 :
        print ('请输入一个正确的数字 !')
        exit(0)
    elif n in [1] :
        print ('{}'.format(n))
    while n not in [1] : # 循环保证递归
        for index in range(2, n + 1) :
            if n % index == 0:
                n //= index # n 等于 n//index
                if n == 1: 
                    print (index )
                else : # index 一定是素数
                    print ('{} *'.format(index), end=" ")
                break

reduceNum(N)         

5、判断一个数是奇数还是偶数

#给定一个数判断是奇数或偶数
while True:
    try:
        # 判断输入是否为整数
        num = int(input('输入一个整数:'))
    # 不是纯数字需要重新输入
    except ValueError: 
        print("输入的不是整数!")
        continue
    if num % 2 == 0:
        print('偶数')
    else:
        print('奇数')
    break

其中try 语句用于异常(Exceptions)处理。

6、求两个整数的最大公约数和最小公倍数

最大公约数:两个或多个整数共有约数中最大的一个。

最小公倍数:两个或两个以上的自然数中,它们有相同的倍数,当中最小的倍数就 是它们的最小公倍数。

# 定义求两个数的最大公约数函数
def hcf(x, y):

   # 获取最小值
   if x > y:
       smaller = y
   else:
       smaller = x

   for i in range(1,smaller + 1):
       if((x % i == 0) and (y % i == 0)):
           hcf = i

   return hcf

# 定义求两个数的最小公倍数函数
def lcm(x, y):

   #  获取最大的数
   if x > y:
       greater = x
   else:
       greater = y

   while(True):
       if((greater % x == 0) and (greater % y == 0)):
           lcm = greater
           break
       greater += 1

   return lcm


# 用户输入两个数字
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))

print( num1,"和", num2,"的最大公约数为", hcf(num1, num2))
print( num1,"和", num2,"的最小公倍数为", lcm(num1, num2))

还可以这样:

#求两个整数最大公约数的函数
def gcd(a, b):
    if b == 0:
        return a
    else:
        return gcd(b, a % b)

#求两个整数最小公倍数的函数
def lcm(a, b):
    return a * b // gcd(a, b) #其中//表示整除运算符


# 用户输入两个数字
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))

print( num1,"和", num2,"的最大公约数为", gcd(num1, num2))
print( num1,"和", num2,"的最小公倍数为", lcm(num1, num2))

7、用1、2、3、4个数字能组成多少个互异的三位数

用1、2、3、4个数字能组成多少个互不相同且无重复数字的三位数?并具体列出来。

源码如下:

n = 0
for i in range(1, 5):
    for j in range(1, 5):
        for k in range(1, 5):
            if(i != k) and (i != j) and (j != k):
                print(i, j, k)  #输出满足条件的排列
                n += 1
print('共有%s种' % n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

学习&实践爱好者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值