《目录》
01:阶乘求和
02:递归求阶乘
03:递归输出
04:反向输出
05:反向输出II
06:设置输出颜色
07:算素数
08:排序
09:逆序列表
01:阶乘求和
题目 求1+2!+3!+…+20!的和。
程序分析 1+2!+3!+…+20!=1+2(1+3(1+4(…20(1))))
res = 1
for i in range(20, 1, -1):
res = i * res + 1
print(res)
02:递归求阶乘
题目 利用递归方法求5!。
def factorial(n):
return n * factorial(n - 1) if n > 1 else 1
print(factorial(5))
03:递归输出
题目 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
def rec(string):
if len(string) != 1:
rec(string[1:])
print(string[0], end='')
rec(input('string here:'))
04:反向输出
题目 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
程序分析 学会分解出每一位数,用字符串的方法总是比较省事。
n = int(input('输入一个正整数:'))
n = str(n)
print('%d位数' % len(n))
print(n[::-1])
05:反向输出II
题目 按相反的顺序输出列表的值。
a = ['one', 'two', 'three']
print(a[::-1])
06:设置输出颜色
题目 文本颜色设置。
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
print(bcolors.WARNING + "警告的颜色字体?" + bcolors.ENDC)
07:算素数
题目 求100之内的素数。
程序分析 用else执行for循环的奖励代码(如果for是正常完结,非break)。
lo = int(input('下限:'))
hi = int(input('上限:'))
for i in range(lo, hi + 1):
if i > 1:
for j in range(2, i):
if (i % j) == 0:
break
else:
print(i)
08:排序
题目 对10个数进行排序。
raw = []
for i in range(10):
x = int(input('int%d: ' % i))
raw.append(x)
for i in range(len(raw)):
for j in range(i, len(raw)):
if raw[i] > raw[j]:
raw[i], raw[j] = raw[j], raw[i]
print(raw)
09:逆序列表
题目 将一个数组逆序输出。
程序分析 依次交换位置,或者直接调用reverse方法。
lis = [1, 10, 100, 1000, 10000, 100000]
# First implementation: using swapping
for i in range(int(len(lis) / 2)):
lis[i], lis[len(lis) - 1 - i] = lis[len(lis) - 1 - i], lis[i]
print('第一种实现:')
print(lis)
# Second implementation: using the reverse() method
lis = [1, 10, 100, 1000, 10000, 100000]
print('第二种实现:')
lis.reverse()
print(lis)