代码复用
【真题】
#递归调用方法求阶乘
def fact(n):
if n==0:
return 1
else:
return n*fact(n-1)
num=eval(input("请输入一个整数:"))
print(fact(abs(int(num)))) #print(调用函数(求绝对值(取整)))
=============== RESTART: D:\ing\python\python\files\example.py ===============
请输入一个整数:5
120
=============== RESTART: D:\ing\python\python\files\example.py ===============
请输入一个整数:3
6
eg:n=2
n=2 | 3 | 2 | 1 | 0 |
---|---|---|---|---|
if: | × | × | × | return 1 |
else: | 3×f(2) | 3×2×f(1) | 3×2×1×f(0) | 3×2×1×1=6 |
#循环语句求阶乘
def fact(n): #fact(n)函数功能是求n的阶乘
#n为必选参数。if:n=3为可选参数
s=1 #s是局部变量,在函数内部定义
for i in range(1,n+1): #range()函数是python的内置函数
s*=i
return s
=============== RESTART: D:\ing\python\python\files\example.py ===============
#累加
def fib(n):
a,b=1,1
for i in range(n-1):
a,b=b,a+b
return a
print(fib(7))
================= RESTART: D:\ing\python\python\files\eg.py =================
13
【实例】软文的诗词风
txt = '''
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
''' #三引号:多行字符串
linewidth = 30 # 预定的输出宽度
def lineSplit(line): #把标点替换成回车
plist = [',', '!', '?', ',', '。', '!', '?'] #列表数据类型,相当于数组
for p in plist:
line = line.replace(p, '\n') #替换,把标点符号换成换行\n
return line.split('\n') #按回车进行分割
def linePrint(line):
global linewidth
print(line.center(linewidth, chr(12288))) #按30个字符的宽度进行居中
newlines = lineSplit(txt)
for newline in newlines:
linePrint(newline)
================= RESTART: D:\ing\python\python\files\eg2.py =================
人生得意须尽欢
莫使金樽空对月
天生我材必有用
千金散尽还复来
分解
>>> a="中国人\n美国人\n英国人\n"
>>> type(a)
<class 'str'> #类型为字符串类型
>>> a.split("\n") #对a的数据进行分割,按照 \n 来分割
['中国人', '美国人', '英国人', '']
>>> type(a) #分割不会改变a的值,仅做分割处理,副本
<class 'str'>
>>> b=a.split("\n") #b为列表型数据
<class 'list'>
>>> for x in b: #x从b变量b是列表型数据)中每次读取一个字符串
print(x)
中国人
美国人
英国人
txt = '''
三国演义 上卷
罗贯中
滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。
白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。
--调寄《临江仙》
第一回 宴桃园豪杰三结义 斩黄巾英雄首立功
话说天下大势,分久必合,合久必分。周末七国分争,并入于秦。及秦灭之后,楚、汉分争,又并入于汉。
汉朝自高祖斩白蛇而起义,一统天下,后来光武中兴,传至献帝,遂分为三国。
'''
linewidth = 30
def lineSplit(line):
plist = [',', '!', '?', ',', '。', '!', '?']
for p in plist:
line = line.replace(p, '\n')
return line.split('\n')
def linePrint(line):
global linewidth
print(line.center(linewidth, chr(12288)))
newlines = lineSplit(txt)
for newline in newlines:
linePrint(newline)
================= RESTART: D:\ing\python\python\files\eg2.py =================
略
【作业1】
#利用函数找三个数里的最大数
def max(a,b):
if a>b:
return a
else:
return b
print(max(max(4,5),6))
================= RESTART: D:\ing\python\python\files\eg.py =================
6
【作业2】
#编写一个函数,利用递归计算出斐波那契数列第n个数并返回
def fab(n):
if n<3:
return 1
return(fab(n-1)+fab(n-2))
print(fab(10))
================= RESTART: D:\ing\python\python\files\eg.py =================
55
【作业3】
#编一个函数,计算字符串中数字、字母、空格及其他字符的个数
def count(str1):
num_number=char_number=space_number=other_number=0
for char in str1:
if char.isdigit(): #isdigit()判断数字的函数
num_number+=1
elif char.isalpha(): #isalpha()判断字符的函数
char_number+=1
elif char=="": #""判断空格及其他
space_number+=1
else:
other_number+=1
print("数字个数:%d,字母个数:%d,空格个数:%d,其他字符:%d"%
(num_number,char_number,space_number,other_number))
return
count("4 6as f65sa1f 56as56a as^S^%")
================= RESTART: D:\ing\python\python\files\eg2.py =================
数字个数:9,字母个数:12,空格个数:0,其他字符:7