【问题标题】:(Beginner Python assignment help) Search input list(初学者Python作业帮助)搜索输入列表
【发布时间】:2019-12-17 10:19:35
【问题描述】:

我刚刚开始学习 python,我被分配了一个使用不同循环创建玩家和统计数据列表的任务。 我不知道如何创建一个搜索球员列表并输出球员姓名和球员数据的函数。

这是作业:

  1. 创建一个名为 player 的空列表

  2. 在 for 循环中使用两个 input() 语句来收集名称 和每个球员的表现(名称将采用 字符串和性能为 0 – 100 的整数。)将两者相加 列表中的信息片段(所以在第一次迭代中 loop players[0] 将包含第一个玩家的名字和 players[1] 将包含他们的表演。)您不需要 验证此数据。

  3. 使用while循环显示所有玩家信息 以下形式:

播放器:性能

  1. 使用您选择的循环类型从 玩家列出这些项目并将其存储在一个名为 results 的新列表中

  2. 编写一个接受“max”或“min”值的函数和 从结果列表中返回最大值或最小值

  3. 编写一个名为 find_player() 的函数,它接受玩家姓名 并从球员名单中显示他们的姓名和表现,或 如果找不到播放器,则会出现错误消息。

这是我目前所拥有的:

print ("Enter 11 Player names and stats")

# Create player list
playerlist = []

# Create results list
results = []

# for loop setting amount of players and collecting input/appending list
for i in range(11):
    player = (input("Player name: "))
    playerlist.append(player)
    stats = int(input("Player stats: "))
    playerlist.append(stats)

# While loop printing player list
whileLoop = True
while whileLoop == True:
  print (playerlist)
  break

# for loop append results list, [start:stop:step]
for i in range(11):
  results.append(playerlist[1::2])
  break  

# max in a custom function
def getMax(results):
    results = (playerlist[1::2])
    return max(results)
print ("Max Stat",getMax(results))


# custom function to find player 
def find_player(playerlist): 
  list = playerlist
  name = str(input("Search keyword: "))
  return (name)
  for s in list:
    if name in str(s):
        return (s)

print (find_player(playerlist))

我尝试了许多不同的方法来创建查找播放器功能,但均未成功。 我认为我遇到了问题,因为我的列表由字符串和整数组成,例如。 ['john', 6, 'bill', 8] 我希望它显示被搜索的玩家和统计信息['John', 6]

任何帮助将不胜感激。

PS: 我知道不需要所有这些循环,但这似乎是作业所要求的。

谢谢

【问题讨论】:

  • 代码中的小 cmets:您可以删除 whilelloop 变量。您可以直接使用 while True:break。我还建议要求在 find_player 函数之外搜索名称并将名称作为第二个参数传递。只是觉得更合适,但并没有根据作业改变要求

标签: python-3.x list function search


【解决方案1】:

我减少了脂肪并制作了一个“虚拟列表”,但是一旦您删除了 first return 声明,您的 find_player 函数似乎运行良好! 一旦你返回一些东西,函数就结束了。 它只需要像这样显示性能:

# Create player list
playerlist = ["a", 1, "b", 2, "c", 3]


# custom function to find player 
def find_player(playerlist): 
    name = str(input("Search keyword: "))
    searchIndex = 0
    for s in playerlist:
        try:
            if name == str(s):
                return ("Player: '%s' with performance %d" % (name, playerlist[searchIndex+1]))
        except Exception as e:
            print(e)
        searchIndex += 1

print (find_player(playerlist))

>>Search keyword: a
>>Player: 'a' with performance 1

我还添加了一个 try/except 以防出现问题。

另外:切勿使用“列表”作为变量名! 此外,您已经有一个内部名称,所以为什么要为其分配另一个名称。您可以在函数中使用 playerlist。

【讨论】:

  • SIDEBAR:我建议不要将两个项目分配给列表,而是创建一个 (name,preformance) 元组并将其分配给列表。它只是更容易理解为一种数据结构。这不是作业所说的,而只是考虑为您的任务选择合适的数据类型
【解决方案2】:

您的代码不起作用,因为您键入了一个密钥并立即返回它。为了使代码工作,您必须使用键来查找值。在这个任务中,它的格式是''key1', value1,'key2', value2, ...]。在函数中,index 是一个变量,存储了 key 的位置。并通过循环找到key的位置。然后返回list [index + 1],返回key对应的值。

playerlist = []

def find_player(playerlist):
  list = playerlist
  name = str(input("Search keyword: "))
  index = 0
  for s in list:
    if name == str(s):
        return ("This keyword's value: %d" % (list[index+1]))
    index+=1

print (find_player(playerlist))

【讨论】:

    猜你喜欢
    • 2022-01-02
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 2023-03-25
    相关资源
    最近更新 更多