python练习04_20200726

1. 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
程序分析:请抓住分子与分母的变化规律。

while True:
    number = raw_input("请输入数字(>0):")
    if number.isdigit():
        break
    else:
        print("输入不满足条件,请重新输入")

total = 0.0
denominator = 1.0
numerator = 2.0

for i in range(1, int(number) + 1):
    print("{}/{}".format(numerator, denominator), end=' ')
    total += numerator / denominator
    temp = numerator
    numerator += denominator
    denominator = temp

print()
print("数列前{}项之和为{}".format(number, total))

2. 题目:求1+2!+3!+…+20!的和。
注:使用递归的方法实现此功能

def jiecheng(n):
    if n == 1:
        return 1
    else:
        return n * jiecheng(n - 1)
    
    
def qiuhe(n):
    if n == 1:
        return jiecheng(1)
    else:
        return jiecheng(n) + qiuhe(n - 1)


print("1!+2!+3!+…+20!的和为{}".format(qiuhe(20)))

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

while True:
    number = raw_input("请输入不多于5位的正整数:")
    if number.isdigit() and len(number) < 6 and number != 0:  
        break
    else:
        print("输入不满足条件,请重新输入")

print("输入的数是{}位".format(len(number)))
# print("逆序打印{}".format(number[::-1]))
li = []
for i in number:
    li.append(i)
print("逆序打印各数字为{}".format(li[::-1]))

python练习04_20200726_第1张图片
4. 题目:输入位数为奇位数的数字(例如:12321),判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

while True:
    number = raw_input("请输入整数:")
    if number.isdigit() and len(number) % 2 == 1:
        break
    else:
        print("输入不满足条件,请重新输入")

if number == number[::-1]:
    print("{}是回文数".format(number))
else:
    print("{}不是回文数".format(number))

python练习04_20200726_第2张图片
5.题目:输入一个字符串,输入指定的分割字符,输出该字符串根据分割字符切分的列表。例如:输入的字符为:‘123fhfa264631321’,输入的分割字符为:‘2’,则输出为:[‘1’,‘3fhfa’,‘646313’,‘1’]
注:自行实现该功能,不要使用字符串的内置函数split!

alpha = raw_input("请输入字符串:")
while True:
    sign = raw_input("请输入分隔符:")
    if sign in alpha:
        break
    else:
        print("该字符串中不存在字符{},请重新输入分隔符".format(sign))

li = []
for i in range(alpha.count(sign)):
    number = alpha.find(sign)   # 找分割符位置
    li.append(alpha[0:number])  # 切片
    # print(alpha.find(sign))
    alpha = alpha[number + len(sign):]  # 调整字符串,为找第二个分割符位置
li.append(alpha)
print(li)

python练习04_20200726_第3张图片

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

# 只有对于两个行数、列数分别相等的矩阵(即同型矩阵),加减法运算才可行\
# 两个矩阵相加减,即它们相同位置的元素相加减!
# a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
a = []
total = 0

for i in range(3):
    a.append([])
    for j in range(3):
        while True:
            number = raw_input('请输入第{}行第{}列的元素: '.format((i + 1), (j + 1)))
            if number.isdigit():
                a[i].append(int(number))
                break
            else:
                print("输入不满足条件,请重新输入")
print('3*3矩阵为:', a)

for i in range(3):
    for j in range(3):
        if i == j:
            total += a[i][j] 
print('主对角线元素之和为:', total)

python练习04_20200726_第4张图片
7.题目:题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

# 随机生成一个20位,每位数值范围在0~100之间的数组
li = []
for i in range(20):
    num = random.randint(0, 100)
    li.append(num)
li.sort()
print("已经排好序的数组为{}".format(li))

while True:
    sign = raw_input("请输入要插入的数:")
    if sign.isdigit():
        break
    else:
        print("输入不满足条件,请重新输入")

li.insert(random.randint(0, 21), int(sign))
print("插入新元素后的数组为{}".format(li))
li.sort()
print("插入新元素后重新排好序的数组为{}".format(li))

你可能感兴趣的:(自动化_python学习,python)