m0_64912051 2021-12-06 07:52 采纳率: 100%
浏览 30
已结题

函数相互嵌套时出现问题

python编程,希望能做一个包含三个人的抽奖程序,第一个函数是要随机抽取三个人中的一个,第二个函数是要通过外界输入确定三人名单

import random
import time

def choujiang(q,w,e):  
    luckylist = [q,w,e]  
    a = random.choice(luckylist)  
    print('开奖倒计时',3)
    time.sleep(1)
    print('开奖倒计时',2)
    time.sleep(1)
    print('开奖倒计时',1)
    time.sleep(1)
    image = '''
    /\_)o<
    |      \\
    | O . O|
    \_____/
    '''
    print(image)
    print('恭喜'+a+'中奖!')
    
def choujiangmingdan():
    q= input('请输入第一人')
    w= input('请输入第二人')
    e = input('请输入第三人')
        
def main():
    choujiangmingdan()
    choujiang(q,w,e)
    
main()

运行结果及报错内容
Traceback (most recent call last):
  File "/home/python-class/practice/apps-1-id-5cd9765d19bbcf00015547b3/root/main4.py", line 35, in <module>
    main()
  File "/home/python-class/practice/apps-1-id-5cd9765d19bbcf00015547b3/root/main4.py", line 33, in main
    choujiang(q,w,e)
NameError: name 'q' is not defined 

我想要达到的结果

程序能够运行

  • 写回答

1条回答 默认 最新

  • Hann Yang 全栈领域优质创作者 2021-12-06 08:07
    关注

    choujiangmingdan()函数中q,w,e不作声明是局部变量,不能传递到函数外部
    所以要用全部变量声明: global q,w,e , 代码如下:

    def choujiangmingdan():
        global q,w,e
        q= input('请输入第一人')
        w= input('请输入第二人')
        e = input('请输入第三人')
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月14日
  • 已采纳回答 12月6日
  • 创建了问题 12月6日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备