Python字典功能的问题-添加和删除

时间:2018-12-07 13:30:37

标签: python whitespace

下面更新

我正在介绍Zybooks编程课程。我正在本章的最后一个项目中,由于间距或返回问题,输出始终失败。我一直在调整它并尝试进行更改,但是它总是以失败告终。有人愿意看这个问题并给我提示我失败的地方吗?我真的很感激,谢谢!

以下是解决问题的步骤:

  
      
  1. 提示用户输入五对数字:球员的球衣号码(0-99)和球员的等级(1-9)。存放球衣   字典中的数字和等级。输出字典的   球衣号码按升序排列的元素(即输出   球衣号码从最小到最大)。提示:字典键   可以存储在排序列表中。 (3分)

  2.   
  3. 实施选项菜单,以供用户修改花名册。每个选项均由单个字符表示。该程序最初   输出菜单,并在用户选择一个选项后输出菜单。   当用户选择退出选项时,程序结束。为了这   步骤,其他选项则无济于事。 (2分)

  4.   
  5. 实施“输出名册”菜单选项。 (1分)

  6.   
  7. 实施“添加播放器”菜单选项。提示用户输入新球员的球衣号码和等级。将值附加到两个   向量。 (1分)

  8.   
  9. 实施“删除播放器”菜单选项。提示用户输入球员的球衣号码。从名单中删除播放器(删除   球衣号码和评分)。 (1分)

  10.   
  11. 实施“更新播放器等级”菜单选项。提示用户输入球员的球衣号码。再次提示您为   玩家,然后更改该玩家的等级。 (1分)

  12.   
  13. 实施“高于评分的输出播放器”菜单选项。提示用户进行评分。打印所有的球衣号码和等级   评分高于输入值的玩家。 (2分)

  14.   

我的代码:

d={}
for i in range(5):
    jersey=int(input("Enter player %s's jersey number:\n" % str(i+1)))
    rating=int(input("Enter player %s's rating:\n" % str(i+1)))

    if jersey not in d:
        d[jersey]=rating
    print()

print("ROSTER")
for k,v in sorted(d.items()):
    print("Jersey number: %d, Rating: %d" % (k,v))



while True:
    print('\nMENU')
    print('a - Add player')
    print('d - Remove player')
    print('u - Update player rating')
    print('r - Output players above a rating')
    print('o - Output roster')
    print('q - Quit\n')

    choice=input('Choose an option:\n')





    choice=choice.lower()


    if choice=='o':
        print("ROSTER")
        for k,v in sorted(d.items()):
            print("Jersey number:%d,Rating:%d" % (k,v))

    elif choice=='a':

        jersey=int(input("Enter a new player jersey number:\n"))
        rating=int(input("Enter player's rating:\n"))

        if jersey not in d:
            d[jersey]=rating
        else:
            print("\nThe Player already in the list")

    elif choice== 'd':

        jersey=int(input("\nEnter a jersey number:\n"))

        if jersey in d:
            del d[jersey]
        else:
            print("\nThe Player is not in the list")

    elif choice== 'u':

        jersey=int(input("\nEnter a jersey number:\n"))

        if jersey in d:
            rating=int(input("\nEnter a new rating for the player:\n"))
            d[jersey]=rating
        else:
            print("\nThe Player is not in the list")

    elif choice== 'r':


        rating=int(input("\nEnter a rating:\n"))

        for k,v in sorted(d.items()):

            if v > rating:
                print("Jersey number:%d,Rating:%d" % (k,v))

    elif choice=='q':
        break

这是我得到的结果。

enter image description here

这是他们想要的结果:

enter image description here

更新:

我最终更改了代码的整个下部。这解决了我遇到的退货问题,但是现在我遇到了其他问题。菜单的两个功能是添加和删除字典条目。我回去上了课,我认为它们的编码正确,但是无法正常工作。有人可以指出我要去哪里了吗?谢谢!

这是代码(下半部分是相同的,上半部分是相同的):

def print_menu():
   menuOp = """MENU
a - Add player
d - Remove player
u - Update player rating
r - Output players above a rating
o - Output roster
q - Quit

Choose an option:"""
   return menuOp

def main():
    while(True):
        c = input()
        if(c=='a'):
            jersey=int(input("Enter a new player jersey number:\n"))
            rating=int(input("Enter player''s rating:\n"))

            if jersey not in d:
                d[jersey]=rating
            else:
                print("\nThe Player already in the list")
        elif(c=='o'):
            print("ROSTER")
            for k,v in sorted(d.items()):
                print("Jersey number:%d,Rating:%d" % (k,v))       
        elif(c=='d'):
            jersey=int(input("\nEnter a jersey number:\n"))

            if jersey in d:
                del d[jersey]
            else:
                print("\nThe Player is not in the list")
        elif(c=='u'):
            jersey=int(input("\nEnter a jersey number:\n"))

            if jersey in d:
                rating=int(input("\nEnter a new rating for the player:\n"))
                d[jersey]=rating
            else:
                print("\nThe Player is not in the list")            
        elif(c=='r'):
            rating=int(input("\nEnter a rating:\n"))

            for k,v in sorted(d.items()):
                if v > rating:
                    print("Jersey number:%d,Rating:%d" % (k,v))
        elif(c=='q'):
            print()
            break
print()
print(print_menu())

这是我当前的输出: enter image description here

这是他们想要的输出。您会看到应该有一个额外的条目。 enter image description here

对不起,不知道为什么粘贴格式变得怪异。

0 个答案:

没有答案