鱼C论坛

 找回密码
 立即注册
查看: 1255|回复: 9

[已解决]使用一个函数修改另一个函数的值

[复制链接]
发表于 2020-4-19 13:34:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:1创建一个魔术师列表,并使用函数show_magicians()将每个魔术师其打印出来
附上我写的代码:
magicians = ['david', 'Louis Liu', 'annie']
def show_magicians(magician):
    for magician in magicians:
        print(magician)
show_magicians(magicians)
题目:
创建一个make_great()函数,将题目一中的魔术师列表进行修改,在每个魔术师的名字中都加入‘the great’的字样调用函数show_magicians(),确认魔术师列表已经改变
magicians = ['david', 'Louis Liu', 'annie']
parameters = []
def make_great(magicians,parameters):
     while magicians:
        parameter = magicians.pop() + 'the great'#这里因为我想的是magicians.pop()返回值+ 'the great',变成的一个新的元素并将这个新的元素重新赋值给parameter。
        parameters.append(parameter)#将新的元素增加到列表中
    magicians = parmeters#将magicians重新赋值,但打印之后感觉并没有赋值成功
---------------------------------------------------------------------------
show_magicians(make_great(magicians,parameters))#发帖之前才想出来 ...(将函数作为参数这是我之前没想到的)
之前的思路一直是修改magicians列表,似乎代码写错了
希望各位大佬改进下我写的代码,太丑了。。。。。。
最佳答案
2020-4-19 17:49:01
李青山 发表于 2020-4-19 17:28
感谢大佬的回答,但是打印出来仍是
david
Louis Liu

你根本就没有调用 make_great 啊,怎么可能会改呢?

不过之前的 make_great 有点小问题,这里给出新的
def make_great(magicians) :
        length=len(magicians)
        while length:
                magicians[length]='the great '+magicians[length]
                length-=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-19 13:41:57 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-4-19 17:44 编辑
def make_great(magicians) :
        length=len(magicians)
        while length:
                magicians[length]='the great'+magicians[length]
                length-=1

def show_magicians(magicians) :
        print(*magicians,sep='\n')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 14:09:03 | 显示全部楼层
def make_great(magicians, parameters) :
    temp = []
    for magic in magicians:
        temp.append(magic+ " " +parameters)
    return temp
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-19 17:28:36 | 显示全部楼层
本帖最后由 李青山 于 2020-4-19 17:30 编辑


感谢大佬的回答,但是打印出来仍是
david
Louis Liu
annie
运行了以下代码:
magicians = ['david', 'Louis Liu', 'annie']
# parameters = []
def make_great(magicians):
    length = len(magicians)
    while length:
        magicians[length] = 'the great' + magicians[length]
        length -= 1
def show_magicians(magicians):
    print(*magicians, sep='\n')
show_magicians(magicians)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 17:49:01 | 显示全部楼层    本楼为最佳答案   
李青山 发表于 2020-4-19 17:28
感谢大佬的回答,但是打印出来仍是
david
Louis Liu

你根本就没有调用 make_great 啊,怎么可能会改呢?

不过之前的 make_great 有点小问题,这里给出新的
def make_great(magicians) :
        length=len(magicians)
        while length:
                magicians[length]='the great '+magicians[length]
                length-=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 19:22:24 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-19 17:49
你根本就没有调用 make_great 啊,怎么可能会改呢?

不过之前的 make_great 有点小问题,这里给出新的

make_great 没有返回值 怎么操作print?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 19:31:16 | 显示全部楼层
jkluoling1992 发表于 2020-4-19 19:22
make_great 没有返回值 怎么操作print?
题目:
创建一个make_great()函数,将题目一中的魔术师列表进行修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 19:48:32 | 显示全部楼层

show_magicians(make_great(magicians,parameters))
这个表达,,把你的函数带进去能实现吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 19:53:18 | 显示全部楼层
jkluoling1992 发表于 2020-4-19 19:48
show_magicians(make_great(magicians,parameters))
这个表达,,把你的函数带进去能实现吗?

题目:
创建一个make_great()函数,将题目一中的魔术师列表进行修改
所以这么调用也可以
make_great(magicians)
show_magicians(magicians)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 23:30:23 | 显示全部楼层
本帖最后由 Stubborn 于 2020-4-19 23:39 编辑
from functools import wraps
def set_magicians(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            magicians = args[0] if args[0] else kwargs.get("magicians")
            magicians = ["this is "+ x for x in magicians]
            func(magicians)
        return wrapper

magicians = ['david', 'Louis Liu', 'annie']
@set_magicians
def show_magicians(magicians):
    for magician in magicians:
        print(magician)

show_magicians(magicians)

可以使用装饰器,非常强大的功能

简单一点的,就这样咯
magicians = ['david', 'Louis Liu', 'annie']
def show_magicians(magicians):
    for magician in magicians:
        print(magician)

def set_magicians(arg, callback):
    arg = ["the great "+ x for x in arg]
    callback(arg)

set_magicians(magicians, show_magicians)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 16:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表