【问题标题】:'bea' is not defined? [duplicate]'bea' 没有定义? [复制]
【发布时间】:2014-06-30 12:06:06
【问题描述】:
def money():
    cashin = input("Please insert money: £1 Per Play!")
    dif = 1 - cashin
    if cashin < 1.0:
        print ("You have inserted £", cashin, " you must insert another £", math.fabs(dif))
    elif cashin > 1.0:
        print ("Please take your change: £", math.fabs(dif))
    else:
        print ("You have inserted £1")
    menu()

def menu():
    print ("Please choose an ARTIST: <enter character ID>")
    print ("<BEA> - The Beatles")
    print ("<MIC> - Michael Jackson")
    print ("<BOB> - Bob Marley")
    cid = input()
    if cid.upper == ("BEA"):
        correct = input("You have selected the Beatles, is this correct? [Y/N]:")
        if correct.upper() == ("Y"):
            bea1()
        else:
            menu()
    elif cid.upper() == ("MIC"):
        correct = input("You have selected Michael Jackson, is this correct? [Y/N]:")
        if correct.upper() == ("Y"):
            mic1()
        else:
            menu()
    elif cid.upper() == ("BOB"):
        correct = input("You have selected Bob Marley, is this correct? [Y/N]:")
        if correct.upper() == ("Y"):
            bob1()
        else:
            menu()
    else:
        print ("That is an invalid character ID")
        menu()

这是我的点唱机代码的一部分

如果我在“选择艺术家”输入中键入“bea”,我的代码会给我一个错误,即未定义 bea。但我不想将它用作函数或变量?我想使用 if 语句根据用户输入来决定要做什么

通常这对我有用,我不知道问题是什么。这只是我的一部分代码,如果您需要查看更多内容,请告诉我

【问题讨论】:

  • 你打电话给bea1(),这是在哪里定义的?
  • @Cyber​​ 以及 mic1()bob1()
  • @Martijn:这似乎是一个稍微糟糕的规范副本,因为它被标记为 [python-3.x](真正的问题是 OP 错误地认为他们正在使用 3.x--I想知道是否有更好的真实复制品不会犯这个错误而成为更好的目标。不幸的是,我遇到的大多数潜在复制品都已经被关闭了:()
  • @Wooble:是的,它也许不是最好的。如果你有一个更好的,让我们推广那个,然后欺骗投票其余的。我最近大吃一惊,后来才意识到我选择了 3.x 帖子作为规范。
  • @Wooble:不过,最好尽快找到一个骗子,然后让这个疲惫骗子的答案蜂拥而至。

标签: python python-2.7


【解决方案1】:

在 Python 2.x 中,要从提示中获取字符串,请使用 raw_input() 而不是 input()

cid = raw_input()

Python 2 中的 input 函数不等同于 Python 3 中的 input。它不返回字符串,但评估它。在您的情况下,您键入 bea 并尝试将 bea 评估为表达式。但是这个名字没有定义。

input 的文档中所述:

相当于eval(raw_input(prompt))

另外,正如@frostnational 在他的评论中指出的那样,您忘记在下一行实际调用upper 方法,因此您试图将方法本身与字符串进行比较。你想要的

if cid.upper() == "BEA":

【讨论】:

  • 也将cid.upper == "BEA"替换为cid.upper() == "BEA"
  • 可能应该提到input()eval(raw_input) 编辑:你已经这样做了:P
猜你喜欢
  • 1970-01-01
  • 2020-12-27
  • 2021-12-25
  • 1970-01-01
  • 1970-01-01
  • 2020-11-02
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多