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