鱼C论坛

 找回密码
 立即注册
查看: 1714|回复: 7

[已解决]萌新求助一个简单的函数定义问题,望大佬们不要嘲笑

[复制链接]
发表于 2020-7-21 10:40:19 | 显示全部楼层 |阅读模式

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

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

x
为什么Python说我的这个great_magican没有定义呀
magicans=['Liuqian','Pual Frid','Manu Coco']

def show_magicans(magicans):
        for magican in magicans:
                print(magican)

show_magicans(magicans)

def make_great(great_magican,magicans):
        while magicans:
                great_magican=magicans.pop
                print(great_magican)
               
make_great(great_magican,magicans)
最佳答案
2020-7-21 12:47:17
本帖最后由 sunrise085 于 2020-7-21 12:53 编辑

不知道你的这个程序中的make_great()函数的目的是要干什么,但是在调用该函数的时候,第一个参数的确没有定义。
magicans=['Liuqian','Pual Frid','Manu Coco']

def show_magicans(magicans):#这三行是一个函数定义,函数有一个参数,注意这里的magicans是形参
    for magican in magicans:
        print(magican)

show_magicans(magicans)#这一行是函数调用,该参数在第一行定义过了,这里的magicans是实参

def make_great(great_magican,magicans): #这四行是函数定义,函数有两个形参
    while magicans:
        great_magican=magicans.pop # 这里估计你是打算从列表magicans中pop一个元素赋值给great_magican,pop函数需要在后面加小括号。另外great_magican在这里赋值,其实就没必要作为参数传入了,反正外面也没有定义过这个变量,而且也没有进行返回。
        print(great_magican)
                
make_great(great_magican,magicans) #这一行是函数调用,调用函数的时候第一个参数是没有定义过的。第二个参数在第一行定义过了。
你的程序有点乱,函数定义和主程序的代码穿插着写,有点乱,而且也不利于自己理解。可以调整一下。
改过之后的样子
def show_magicans(magicans):#第一个函数定义
    for magican in magicans:
        print(magican)

def make_great(magicans):#第二个函数定义,这里去掉了那个没有用到的参数
    while magicans:
        great_magican=magicans.pop()#这里帮你修改了
        print(great_magican)
                
#从这里开始,是主程序。先是定义了一个列表,然后调用show_magicans()函数,最后调用了make_great()函数
magicans=['Liuqian','Pual Frid','Manu Coco']

show_magicans(magicans)

make_great(magicans)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-21 10:41:34 | 显示全部楼层
这样试试:
magicans=['Liuqian','Pual Frid','Manu Coco']

def show_magicans(magicans):
        for magican in magicans:
                print(magican)

show_magicans(magicans)

def make_great(great_magican,magicans):
        while magicans:
                great_magican=magicans.pop()
                print(great_magican)
               
make_great(great_magican,magicans)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-21 10:43:23 | 显示全部楼层


改成这样试试看,你的 pop 函数忘记加括号了吧?
magicans = ['Liuqian', 'Pual Frid', 'Manu Coco']


def show_magicans(magicans):
    for magican in magicans:
        print(magican)


show_magicans(magicans)


def make_great(great_magican, magicans):
    while magicans:
        great_magican = magicans.pop()
        print(great_magican)


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

使用道具 举报

发表于 2020-7-21 12:47:17 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-7-21 12:53 编辑

不知道你的这个程序中的make_great()函数的目的是要干什么,但是在调用该函数的时候,第一个参数的确没有定义。
magicans=['Liuqian','Pual Frid','Manu Coco']

def show_magicans(magicans):#这三行是一个函数定义,函数有一个参数,注意这里的magicans是形参
    for magican in magicans:
        print(magican)

show_magicans(magicans)#这一行是函数调用,该参数在第一行定义过了,这里的magicans是实参

def make_great(great_magican,magicans): #这四行是函数定义,函数有两个形参
    while magicans:
        great_magican=magicans.pop # 这里估计你是打算从列表magicans中pop一个元素赋值给great_magican,pop函数需要在后面加小括号。另外great_magican在这里赋值,其实就没必要作为参数传入了,反正外面也没有定义过这个变量,而且也没有进行返回。
        print(great_magican)
                
make_great(great_magican,magicans) #这一行是函数调用,调用函数的时候第一个参数是没有定义过的。第二个参数在第一行定义过了。
你的程序有点乱,函数定义和主程序的代码穿插着写,有点乱,而且也不利于自己理解。可以调整一下。
改过之后的样子
def show_magicans(magicans):#第一个函数定义
    for magican in magicans:
        print(magican)

def make_great(magicans):#第二个函数定义,这里去掉了那个没有用到的参数
    while magicans:
        great_magican=magicans.pop()#这里帮你修改了
        print(great_magican)
                
#从这里开始,是主程序。先是定义了一个列表,然后调用show_magicans()函数,最后调用了make_great()函数
magicans=['Liuqian','Pual Frid','Manu Coco']

show_magicans(magicans)

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

使用道具 举报

发表于 2020-7-21 12:48:18 | 显示全部楼层
我修改了你的代码以实现你想要的功能。
满意请设置最佳答案!!
magicans=['Liuqian','Pual Frid','Manu Coco']

def show_magicans(magicans):
        for magican in magicans:
                print(magican)

show_magicans(magicans)

print('------------------分割线-------------------')
def make_great(magicans):
        while magicans:
                great_magican=magicans.pop()
                print(great_magican)
                
make_great(magicans)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-21 15:23:17 | 显示全部楼层

谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-21 15:24:06 | 显示全部楼层
Twilight6 发表于 2020-7-21 10:43
改成这样试试看,你的 pop 函数忘记加括号了吧?

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-21 15:25:43 | 显示全部楼层
sunrise085 发表于 2020-7-21 12:47
不知道你的这个程序中的make_great()函数的目的是要干什么,但是在调用该函数的时候,第一个参数的确没有定 ...

谢谢答主,问题解决了
初学者,还不太会,代码确实很乱,谢谢指出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 20:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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