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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,744评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,505评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,105评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,242评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,269评论 6 389
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,215评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,096评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,939评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,354评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,573评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,745评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,448评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,048评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,683评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,838评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,776评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,652评论 2 354

推荐阅读更多精彩内容