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日

悬赏问题

  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。