带有 while 循环的函数内的 Python 输入函数

Python Input function inside a function with a while loop

提问人:Ifeoma Ogbodo 提问时间:9/4/2023 更新时间:9/4/2023 访问量:73

问:

我已经尝试了一段时间的 python 练习,但它不起作用。

在练习中,我定义了一个函数make_album它接受两个参数:artistName 和 albumTitle。

该函数应该有一个 While 循环,允许用户输入专辑的艺术家和标题。一旦我获得了该信息,我就会调用该函数,它返回一个包含这些信息的字符串。

While 循环旨在不断请求用户的输入,直到他们键入“Quit”,这意味着中断循环并停止代码运行。

在无数次试验和错误中,我这样做了:

def make_album(artistName, albumTitle):

    code_run = input("Enter 'CONTINUE' to continue code or 'QUIT' to quit code: ")

    respond = 'My favorite artist is ' + artistName + ' and their latest album is ' + albumTitle

   while code_run == 'continue':
       artistName = input("What is your favorite artist's name? ")
       albumTitle = input("What is their latest album? ")

       if code_run == 'quit':
          break

    return respond 


res = make_album(artistName, albumTitle)
print(res)

问题是,当我调用函数时,函数调用中的参数在某种程度上“未定义”。我不知道问题出在哪里。

我尝试将输入提示作为参数放在函数调用本身中。它起作用了,但它没有像预期的那样自动再次运行。

python 函数 输入 while-loop

评论

0赞 Sembei Norimaki 9/4/2023
我建议你拿起你最喜欢的橡皮鸭,试着一步一步地解释你的代码是做什么的。或者,可以在调试模式下运行代码,以查看每个执行步骤中发生的情况。编码不是关于“无数次的试验和错误”,而是关于有一个特定的、易于理解的过程,并将其翻译成计算机可以理解的语言,在本例中为 python。
0赞 Codist 9/4/2023
一旦你进入了 while 循环,你就永远不会 [以编程方式] 中断code_run因为它不会改变。另外,当您尝试运行此代码时,您是否注意到 NameError 异常?
0赞 Ifeoma Ogbodo 9/4/2023
@DarkKnight这是主要问题。我不明白如何解决的NameError。
0赞 gboffi 9/4/2023
你对练习规范的总结对我来说没有意义。有没有可能你误解了运动规范?
0赞 Ifeoma Ogbodo 9/4/2023
@gboffi 你觉得我一定是哪里误会了??

答:

0赞 Héber Júlio 9/4/2023 #1

因为您将 make_album 函数分配给具有未定义变量的变量,然后尝试打印。正确的代码如下所示:

code_run = "continue" # start as "continue to make the loop work"

def make_album(artistName, albumTitle):
    return 'My favorite artist is ' + artistName + ' and their latest album is ' + albumTitle

while code_run == 'continue':
    code_run = input("Enter 'CONTINUE' to continue code or 'QUIT' to quit code: ")
    if code_run == 'quit':
        break
       
    artistName = input("What is your favorite artist's name? ")
    albumTitle = input("What is their latest album? ")

    res = make_album(artistName, albumTitle)
    print(res)

return 关键字将让函数返回由 yout 函数上的参数指定的定义值,这要干净得多。您的代码尝试调用超出范围的变量,并且调用从不在该块之外交互的函数内部的变量。

评论

1赞 Ifeoma Ogbodo 9/4/2023
感谢您尝试解决它,但不幸的是,代码不起作用。
0赞 Héber Júlio 9/4/2023
如何?我在我的环境中运行了两个代码并调整了这个问题,还有什么具体问题吗?
0赞 Ifeoma Ogbodo 9/10/2023
嗨,我在尝试自己更正代码时犯了一个错误。您的解决方案完美无缺。谢谢。
0赞 Héber Júlio 9/28/2023
凉爽的,将其标记为已解决