python经典例题(三)

【程序21】
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
分析:分子和分母的变化规律与斐波那契数列契合

num = 2  # 分子
den = 1  # 分母
lst = []
print('分数序列为:', end='')

for i in range(1, 21):
    print(f'{num}/{den}', end='  ')
    lst.append(num / den)
    num, den = num + den, num

print('')
print('该分数序列的前20项和为:', sum(lst))

【程序22】
题目:求1+2!+3!+…+20!的和 。

lst = []
print('1 +', end=' ')

for i in range(1, 21):
    n = 1
    for j in range(1, i+1):
        n *= j
    lst.append(n)
    if 2 <= i < 20:
        print(f'{i}! +', end=' ')
    elif i == 20:
        print(f'{i}!', end='')
        
print('的和为:', sum(lst))

【程序23】
题目:利用递归方法求5!。

def fun(i):
    if i == 1:
        return 1
    return i * fun(i -1)

x = fun(5)
print(x)

【程序24】
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

def fun(s, l):
    if l == 0:
        return
    print(s[l-1])
    fun(s, l-1)

s = input('enter a string:')
l = len(s)
fun(s, l)

【程序25】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

num = input('输入一个不多于5位的正整数:')
if num.isdigit():
    print('它有 %d 位数' % len(num))
    num = num[::-1]
    print('逆序打印出各位数字,分别是:')
    
    for i in range(0, len(num)):
        print(num[i])

【程序26】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

num = int(input('输入一个五位数:'))
ge = num % 10
shi = num // 10 % 10
bai = num // 100 % 10
qian = num // 1000 % 10
wan = num // 10000

if ge == wan and shi == qian:
    print('该数是回文数!')
else:
    print('该数不是回文数!')
num = input('输入一个五位数:')

if num[0] == num[4] and num[1] == num[3]:
    print('Yes!')
else:
    print('No!')

【程序27】
题目:求100之内的素数。

print('100以内的素数有:', end='')

for i in range(1, 101):
    for j in range(2, i):
        if i % j == 0:
            break
    else:
        print(i, end=' ')

【程序28】
题目:对10个数进行排序。

num = input('输入十个数,以一个空格隔开:')
lst = num.split(' ')
l = []

for i in range(0, len(lst)):
    l.append(int(lst[i]))
x = sorted(l)
print(x)

【程序29】
题目:求一个3*3矩阵对角线元素之和 。

lst = []

for i in range(3):
    for j in range(3):
        lst.append(int(input('enter a number: ')))
        
print('数组为:', lst)
sum = 0

for k in range(3):
    sum += lst[3*k + k]
    
print('对角线之和为:', sum)

【程序30】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

import random

lst = []

for i in range(10):
    a = random.randint(1, 100)
    lst.append(a)

lst.sort()
print(lst)
num = int(input('输入一个1到100之间的整数:'))

for j in range(0, len(lst)):
    if num <= lst[j]:
        lst.insert(j, num)
        break

print(lst)

你可能感兴趣的:(Python,python,算法,线性代数)