python练习题_20200720

1、 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

# 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

numerator_lst = [2, 3]
denominator_lst = [1, 2]
sum_fraction = 0
for i in range(2, 21):
    numerator_lst.append(numerator_lst[i-1] + numerator_lst[i-2])
    denominator_lst.append(denominator_lst[i-1] + denominator_lst[i-2])
for j in range(21):
    sum_fraction += numerator_lst[j] / denominator_lst[j]
tip_str = str('有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…这个数列的前20项之和')
print('{}:{}'.format(tip_str, sum_fraction))

运行结果:
在这里插入图片描述
2、题目:求1+2!+3!+…+20!的和。

# 题目:求1+2!+3!+…+20!的和。


def cal_factorial(number):
    if number == 1:
        return number
    else:
        return number*cal_factorial(number-1)


if __name__ == '__main__':
    sum_factorial = 0
    for i in range(1, 21):
        sum_factorial += cal_factorial(i)
    print('1+2!+3!+…+20!的和:{}'.format(sum_factorial))

运行结果:
在这里插入图片描述
3、题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

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

print('请输出一个不多于5位数的正整数:')
var = 1
number_lst = []
while var:
    number_input = str(input())
    if number_input.isdigit() is not True:
        print('输入非正整数,请重新输入一个不多于5位数的正整数:')
    elif len(number_input) > 5:
        print('输入的正整数大于5位数,请重新输入一个不多于5位数的正整数:')
    elif number_input[0] == '0':
        print('输入的正整数首位不能为0,请重新输入一个不多于5位数的正整数:')
    else:
        break
for i in number_input:
    number_lst.append(i)
number_lst.sort()
number_lst.reverse()
print('输入的正整数为{}位数'.format(len(number_input)))
print('输入的正整数各数字逆序排序为:')
for j in number_lst:
    print(j, end=' ')

运行结果:
在这里插入图片描述
4、题目:输入位数为奇位数的数字(例如:12321),判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

# 题目:输入位数为奇位数的数字(例如:12321),判断它是不是回文数。
# 即12321是回文数,个位与万位相同,十位与千位相同

print('请输出一个奇位数的数字:')
flag = True
while True:
    number_input = str(input())
    if number_input.isdigit() is not True:
        print('输入非全部数字,请重新输出一个奇位数的数字:')
    elif len(number_input) % 2 == 0:
        print('输入的非奇位数的数字,请重新输出一个奇位数的数字:')
    elif number_input[0] == '0':
        print('输入的正整数首位不能为0,请重新输出一个奇位数的数字:')
    else:
        break
for i in range(len(number_input)//2):
    if number_input[i] == number_input[len(number_input)-1-i]:
        pass
    else:
        flag = False
        break
if flag is True:
    print('输入的数字{}是回文数!'.format(number_input))
else:
    print('输入的数字{}非回文数!'.format(number_input))

运行结果:
在这里插入图片描述
在这里插入图片描述
5、题目:输入一个字符串,输入指定的分割字符,输出该字符串根据分割字符切分的列表。例如:输入的字符为:‘123fhfa264631321’,输入的分割字符为:‘2’,则输出为:[‘1’,‘3fhfa’,‘646313’,‘1’]

# 题目:输入一个字符串,输入指定的分割字符,输出该字符串根据分割字符切分的列表。
# 例如:输入的字符为:‘123fhfa264631321’,输入的分割字符为:‘2’,则输出为:[‘1’,‘3fhfa’,‘646313’,‘1’]


print('请输入任意一个字符串:')
input_str = str(input())
print('请输入指定的分割字符:')
split_lst = []
while True:
    split_str = str(input())
    if split_str not in input_str:
        print('指定的分割字符不在输入的字符串中,请重新输入指定的分割字符:')
    else:
        break
split_len = len(split_str)
for i in range(input_str.count(split_str)):
    split_lst.append(input_str[0:input_str.find(split_str)])
    input_str = input_str[input_str.find(split_str)+split_len:]
split_lst.append(input_str)
print(split_lst)

运行结果:
在这里插入图片描述

6、题目:求一个3*3矩阵主对角线元素之和。

# 题目:求一个3*3矩阵主对角线元素之和。

import random


def cal_matrix(row, column):
    matrix_list = []
    sum_matrix = 0
    for i in range(row):
        row_list = []
        for j in range(column):
            row_list.append(random.randrange(1, 100))
        matrix_list.append(row_list)
    for k in range(row):
        sum_matrix += matrix_list[k][k]
    return matrix_list, sum_matrix


if __name__ == '__main__':
    print('请输入正整数N,系统将随机生成N*N矩阵:')
    while True:
        number_input = input()
        if number_input.isdigit() is True:
            number = int(number_input)
            break
        else:
            print('输入非正整数,请重新输入')
    matrix, sum_mat = cal_matrix(number, number)
    print('系统随机生成{}*{}矩阵如下:'.format(number, number))
    for m in range(number):
        print('|', end='')
        for n in range(number):
            print(str(matrix[m][n]).rjust(3), end=' ')
        print('|')
    print('系统随机生成{}*{}矩阵主对角线元素之和:{}'.format(number, number, sum_mat))

运行结果:
在这里插入图片描述
7、题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

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

original_list = [1, 3, 5, 7, 9]
print('有一个已经排好序的数组{}'.format(original_list))
print('请输入要插入的数:')
while True:
    number_input = input()
    if number_input.isdigit() is True:
        number = int(number_input)
        break
    else:
        print('输入的字符不合法,请重新输入!')
sum_cmp = 0
for i in range(len(original_list)):
    if original_list[i] >= number:
        original_list.insert(i, number)
        break
    else:
        sum_cmp += 1
if sum_cmp == len(original_list):
    original_list.append(number)
else:
    pass
print('插入输入的数字后,原数组变为{}'.format(original_list))

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值