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日

悬赏问题

  • ¥15 gwas 分析-plink 检查人口分层出现下面问题
  • ¥15 关于#matlab#的问题:需要 MATLAB 运行程序,对比四个多址通信方式(TDMA,FDMA,CDMA,OFDMA)的抗噪声性能
  • ¥15 有没有复现过PFENet的,如何解决?
  • ¥15 vue3使用swiper轮播图循环失败
  • ¥15 FDMA,OFDMA,TDMA 和 CDMA 系统容量对比仿真
  • ¥15 图神经网络的入侵检测
  • ¥15 工业数据采集技术+存储架构推荐
  • ¥15 GPT-SOVITS如何训练少数民族语言支持合成语音
  • ¥20 树莓派4b使用Camera Module 3时出现the system should be configured for the legacy camera stack问题
  • ¥200 GitHub开源程序配置在VScode调试