【问题标题】:Prompt to enter a name and then output the name that was entered along a score提示输入名称,然后输出与乐谱一起输入的名称
【发布时间】:2017-03-12 20:25:13
【问题描述】:

我正在为我的 CS 入门课程编写一个程序,但我有点卡住了。
我有一个与分数列表相对应的指定名称列表。
我应该提示用户输入一个名称,然后程序应该输出输入的名称以及相应的分数。
正如我现在写的那样,无论输入如何,程序都会打印集合中的名字和分数。我已经坚持了一段时间,任何帮助将不胜感激!

这是我现在拥有的:

names=['Jim','Sarah','Jason','Lynne','Ginny','Joe','Susan'];
scores=['88','92','95','84','85','92','89'];
input("Please enter student's name:")
for i in range (0,7):                             
    print (input(names[i] + scores[i]));

【问题讨论】:

  • 您完全忽略了输入。你期望会发生什么?您需要在变量中捕获输入,然后在代码的其余部分中使用该变量。此外,像这样在 print 语句中包含 input 确实没有意义。也许你可以在他们的办公时间拜访你的导师?
  • 顺便说一句,Python 不使用分号。
  • @cricket_007 分号有效(它们分隔语句)但这里当然不需要。
  • @Jean-FrançoisFabre 澄清 = 作为行终止符 :)

标签: python


【解决方案1】:

程序应该输出输入的名称

考虑到您没有捕获 input() 返回值,这将很难。

试试这个(例如)

name = input("Please enter student's name:")
print(name)

然后,您的下一个任务是检查(在您的循环中)何时name == <a name in the list>

提示:您可以在循环中使用这些而不是range(0,7)

for student in names:

或者,更好的是,请参阅zip lists in python

for (student, score) in zip(names, scores):

【讨论】:

    【解决方案2】:

    使用zip 函数,您可以将两个lists 组合成一个易于使用的一对一tuples 组。

    names=['Jim','Sarah','Jason','Lynne','Ginny','Joe','Susan']
    scores=['88','92','95','84','85','92','89']
    data = zip(names, scores) # <- ('Jim', '88'), ('Sarah', '92'), ...
    
    stud = input('Enter the student's name: ')
    for (student, score) in data:
        if (stud == student):
            print('{} -> {}'.format(student, score))
    

    【讨论】:

      【解决方案3】:

      最好使用 Python 字典:

      student_scores = {'Jim': 88, 'Sarah': 92, 'Jason': 95}
      

      等等…… 然后你可以像这样调用它们中的每一个;

      name = input("Please enter student's name: ")
      print(name + 'has a score of ' + student_scores[name])
      

      【讨论】:

        猜你喜欢
        • 2022-01-18
        • 2021-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-29
        • 1970-01-01
        • 1970-01-01
        • 2011-11-20
        相关资源
        最近更新 更多