2017-01-02 78 views
-2

我創建一個關於球員和得分方案和程序基本上存儲的名稱和球員(由用戶添加)和要求一個由他們的名字找球員得分在列表中的字符串。名稱和分數加入到在執行該代碼列表中的所有球員都顯示,而不僅僅是球員和他們的得分用戶希望列表名稱playerList查找使用

def findgolfer(): 
    playerList.sort() 
     while True: 
      findd=input("Enter a golfer's name\n(m for main menu)\n") 

for findd in playerList: 
    print (findd, "score =", playerList[playerList.index(findd)] 

if findd == 'm': 
    print (findd, " does not exist") 
main() 

。我的問題是如何讓程序只顯示我想要的球員的名字和得分?

+0

您的代碼不清楚。你的while永遠運行,你對輸入的結果不做任何處理,看起來'if'應該在輸入後重定向到某個菜單(而不是打印不存在)。查找元素是否在列表中很簡單,如果在playerList中找到:這是基本的Python東西。 – kabanus

+0

即時通訊不好意思,但我沒有添加,如果不是,但然後說'不存在'它甚至不會顯示每個人 –

+0

這是一個[XY](http://mywiki.wooledge.org/XyProblem)問題。你在這段代碼中試圖做什麼,你所要求的可能是不一樣的。你是否試圖獲得用戶輸入並將其添加到列表中,直到發生什麼事情,然後查看列表?爲自己澄清一下,然後如果你不知道如何用簡明的目標來編輯你的問題 - 你想達到什麼目的? - 和你有問題。 – kabanus

回答

1

你應該寫你的問題。具體而言,您在評論中寫的內容應該在問題中明確。你的問題是:

鑑於配對(玩家,分數)和玩家姓名(字符串)的列表,我如何檢查玩家是否存在並檢索得分?

如果你寫了這樣的事情,這將是明確的,你是保持球員得分的方法不是最好的一個。我會在一秒鐘之內回來。最簡單的方法,只用一點點Python的魔術做你想做什麼:

#Assume inputPlayer was accepted as input 
for player,score in playerList: 
    if player == inputPlayer: 
      print("Player",player,"has",score,"points.") 
      break 
else: print("Player",inputPlayer,"does not exist!") 

這表明在Python中for else結構,你應該閱讀有關。還有其他方法可以做到這一點,但值得了解,因爲這是一個特殊功能。

什麼是「更好」的方式?如果你在dict中維護你的球員和得分列表,你會有O(1)動作和更好的可讀性(在我看來)。您可以元組的列表中很容易地轉移到dict

scores = dict(playerList) 

,但你可能想打造dict在初始代碼。可能你有一個playerList.append((user,score))你會有一個scores[player] = score。如果是這種情況,那麼上述變爲:

try: print("Player",inputPlayer,"has",scores[inputPlayer],"points.") 
except KeyError: print("Player",inputPlayer,"does not exist!") 
+0

並確保您的字典/列表正確填充之前測試代碼! – kabanus