【问题标题】:Why isn't the input function working? [duplicate]为什么输入功能不起作用? [复制]
【发布时间】:2018-03-09 18:11:27
【问题描述】:

我开始制作一个项目,展示我喜欢哪些乐队,然后询问他们希望看到哪些艺术家/乐队的专辑由我评分。我已经用它来显示我喜欢的专辑,但是每当我尝试让 Python 显示我如何为乐队/艺术家在特定专辑中评价每首歌时,它什么也没做。它刚刚结束。

发生了什么,我该如何解决?

另外我如何将album = input("\nWhich album would you like to see the songs rated?") 转换为小写,这样更容易?比如如果它问你想看哪张专辑的歌曲评分?我输入Vessel,Python不会解释列表名称而不粘贴列表吗?

import time

top_albums = ["1.) Vessel", "2.) Regional at Best", "3.) Twenty One 
Pilots", "4.) Blurryface"]

twenty_one_pilots = ["Example 1"]
regional_at_best = ["Example 2"]
vessel = ["Example 3"]
blurryface = ["Example 4"]

for top_album in top_albums:
    print(top_album)

time.sleep(2)

album = input("\nWhich album would you like to see the songs rated?")


if album == twenty_one_pilots:
    print(twenty_one_pilots)

elif album == regional_at_best:
    print(regional_at_best)

elif album == vessel:
    print(vessel)

elif album == blurryface:
    print(blurryface)

【问题讨论】:

  • 你正在比较一个字符串和一个列表。
  • 您在input() 中输入的字符串不是变量引用。你得到一个字符串,所以album = 'vessel',而不是列表对象。您可能想了解 dictionaries。以及关于str.lower() 生成字符串的小写版本。

标签: python python-3.x input user-input


【解决方案1】:

python 不会将字符串解释为代码,这意味着您的代码不会按预期运行。做你想做的事,在album上执行eval()

关于您的第二个问题,使用.lower() 将字符串转换为小写,如下所示:

album = input("…").lower()

【讨论】:

    【解决方案2】:

    如果您想根据列表名称获取列表的内容,使用dictionary 可能更合适。最小的例子:

    my_bands = { "vessel" : ["album 1", "album 2"], "21 pilots" : ["album 1", "album 2"] }
    
    band = input("\nEnter a band name to see their albums: ")
    
    print(my_bands[band])
    

    例如,要包含评分,您的列表可以是包含专辑名称和评分的元组列表。但希望这可以让您朝着正确的方向开始。

    正如在其他地方所说,您可以在字符串上使用.lower() 以转换为小写。所以上面的最后一行是print(my_bands[band.lower()])

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      相关资源
      最近更新 更多