簡體   English   中英

將值綁定到字典中的鍵,然后打印

[英]Tying values to keys in a dictionary and then printing

這是我編寫的主要代碼的一小部分。 根據用戶的選擇,他們可以添加播放器信息a,然后從字典播放器名冊中打印信息。 我想存儲信息,然后以這種格式打印,但是我無法弄清楚該怎么做。 姓名****電話號碼****澤西島號碼****我是詞典的新手,但過去幾天我花了數小時閱讀和搜索有關詞典的信息,並嘗試了幾種不同的方法來完成此操作但失敗了。 我已經以現在的方式獲得了最接近的設置,但仍然無法正常工作。 我覺得我將信息錯誤地存儲在字典中供初學者使用,對您的幫助將不勝感激。

player_roster = {}
def display_roster(self):                         #Print Roster
    if len(player_roster) != 0:
        for x in player_roster.keys():
            print('Name:', x, 'Phone Number:', player_roster[x])
    else:                                          #Print No One on Roster
        len(player_roster) == []
        print('No names have been entered:')

def add_player(self,):                              #Enter Members Name
    name = input('Enter New Players Name:')
    phone_number = input('Enter Players Phone Number:')
    jersey_number = int(input('Enter Players Jersey Number'))
    player_roster[name] = phone_number, 'Jersey Number', jersey_number
#If I input Toby as Name 444-444 as Phone Number and 3 as Jersey number it outputs like this
Name: Toby Phone Number: ('444-4444', 'Jersey Number', 3)
# I would like it to output like 
                                 Name: Toby
                                 Phone Number: 444-4444
                                 Jersey Number: 3

有一些事情我會在您的代碼中進行更改,但為了使其與您的要求保持一致,請看一下以下內容:

def display_roster():
    if len(player_roster) != 0:
        for x in player_roster.keys():
            print('Name:', x)
            print('Phone Number:', player_roster[x][0])
            print('Jersey Number:', player_roster[x][1])
    else:
        print('Roster is empty.')
    return


player_roster = {}
def add_player():
    name = input('Enter New Players Name:\t')
    phone_number = input('Enter Players Phone Number:\t')
    jersey_number = int(input('Enter Players Jersey Number:\t'))
    player_roster[name] = [phone_number, jersey_number]
    return

add_player()
display_roster()

# PRINTS:
#Name: Toby
#Phone Number: 444-4444
#Jersey Number: 3

多行打印可為您提供所需的結果。 如評論中所述,這也可以使用單個print()語句完成,但我認為緊湊的代碼對您沒有多大影響。

此外,此len(self.player_roster) == []行沒有意義。 這與簡單地在一行中編寫True一樣好。 團隊的“空虛”由else:檢查else:

最后,我會稍微改變玩家在“ Roster”字典中的存儲方式,並使其如下: {"Toby": ['444-4444', 3], ...}

你幾乎在那里。 下面的修改將允許您根據需要進行打印(並且可讀性更高):

class PlayerDictionary():
    def __init__(self):
        pass
    player_roster = {}
    def display_roster(self):                         #Print Roster
        if len(self.player_roster) != 0:
            for key, value in self.player_roster.iteritems():
                print(str(key) + ": " + str(value))
        else:                                          #Print No One on Roster
            len(self.player_roster) == []
            print('No names have been entered:')

    def add_player(self,):
        self.player_roster['Name'] = input('Enter New Players Name:')
        self.player_roster['Phone Number'] = input('Enter Players Phone Number:')
        self.player_roster['Jersey Number'] = int(input('Enter Players Jersey Number'))

if __name__ == "__main__":
    player = PlayerDictionary()
    player.add_player()
    player.display_roster()

一個稍微更可維護的解決方案是為Player創建一個類。 在對象上設置屬性並重載str函數,例如

class Player(object):
    def __init__(self):
        self.__name = ""
        self.__phone_number = ""
        self.__jersey_number = ""

    @property
    def name(self):
        return self.__name

    @property
    def phone_number(self):
        return self.__phone_number

    @property
    def jersey_number(self):
        return self.__jersey_number

    @name.setter
    def name(self, val):
        self.__name = val

    @phone_number.setter
    def phone_number(self, val):
        self.__phone_number = val

    @jersey_number.setter
    def jersey_number(self, val):
        self.__jersey_number = val

    def __str__(self):
        return ("Name: %s\nPhone Number: %s\nJersey Number: %s" % (str(self.__name), str(self.__phone_number), str(self.__jersey_number)))

if __name__ == "__main__":
    player = Player()
    player.name = input('Enter New Players Name:')
    player.phone_number = input('Enter Players Phone Number:')
    player.jersey_number = int(input('Enter Players Jersey Number'))
    print(player)

我建議您將打印語句替換為:

print(" Name: %s \n Phone Number: %s \n Jersey Number: %d") % player_roster[x]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM