16讲 函数的局部和全局变量,代码利用和实例解析

代码复用

【真题】

#递归调用方法求阶乘
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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容