2017-10-20 12 views
-2

Donc, à l'origine, j'ai terminé cette tâche avec rien, mais quelques déclarations if, elif. Mais il a été demandé que je répartisse le travail de ces déclarations dans des fonctions séparées en tant qu'exercice supplémentaire. J'ai besoin d'acquérir des noms à ajouter à une liste et avoir la possibilité de modifier ou de supprimer les noms. Mais Im luttant pour avoir les fonctions retournent leur sortie à la liste.Débutant Python liste, définissant la variable

Voici ce que j'ai jusqu'à présent

print("Roster Management") 


def addplayer(): 
    name=input("Enter new player name: ") 
    roster = [name] 
    list(roster) 
    roster.append(name) 

def removeplayer(): 
    name = input('Enter player for removal: ') 
    roster.remove(name) 


def editplayer(): 
    oldname = input('Enter name you want to edit: ') 
    newname = input('Enter new name: ') 
    [x.replace(oldname, newname) for x in roster] 


while 1==1: 
    print('---------- Main Menu ------------') 
    print("Choose from the following options") 
    print('1. Display Team Roster') 
    print('2. Add Member') 
    print('3. Remove Member') 
    print('4. Edit Member') 
    print('9. Exit Program') 
    print(" ") 
    selection = input("Enter Selection: ") 
    if selection == '1': 
     for x in roster: 
      print(roster) 
    elif selection == '2': 
     addplayer() 
    elif selection == '3': 
     removeplayer() 
    elif selection == '4': 
     editplayer() 
    elif selection == '9': 
     print("Closing program...") 
     break`enter code here` 

Répondre

0

Il sont peu de choses qui ne sont pas avec votre code:

# 1

roster = [name] # this creates a new list with a single element in it instead of appending to some existing list 
list(roster) # you're trying to convert a list to a list, so not needed 
roster.append(name) # you should've some local/global roaster to append to 

# 2

def removeplayer(): 
    name = input('Enter player for removal: ') 
    roster.remove(name) # again, you should've some local/global roaster to append to 
    #in case of local you should return the list for further usage, in case of global you can simply remove 

# 3

[x.replace(oldname, newname) for x in roster] 
# again you're neither updating any existing list/ nor returned anything 
# also check if `x==oldname` then replace with new name 

# 4

for x in roster: 
    print(roster) # x is what you should be printing, not the whole list (roaster) 

Ainsi, votre code mis à jour avec ces changements serait quelque chose comme ceci:

roster = [] 
def addplayer(): 
    name=input("Enter new player name: ") 
    roster.append(name) 

def removeplayer(): 
    name = input('Enter player for removal: ') 
    roster.remove(name) 


def editplayer(): 
    global roster 
    oldname = input('Enter name you want to edit: ') 
    newname = input('Enter new name: ') 
    roster = [newname if x == oldname else oldname for x in roster] 


print("Roster Management") 
while 1==1: 
    print('---------- Main Menu ------------') 
    print("Choose from the following options") 
    print('1. Display Team Roster') 
    print('2. Add Member') 
    print('3. Remove Member') 
    print('4. Edit Member') 
    print('9. Exit Program') 
    print(" ") 
    selection = input("Enter Selection: ") 
    if selection == '1': 
     for x in roster: 
      print(x) 
    elif selection == '2': 
     addplayer() 
    elif selection == '3': 
     removeplayer() 
    elif selection == '4': 
     editplayer() 
    elif selection == '9': 
     print("Closing program...") 
     break 
0

Ajouter

return list 

à la fin de votre définition parce qu'en ce moment la définition ne sait pas ce qu'il est censé revenir. Aussi dans votre, si la déclaration que vous devriez avoir

print(def()) 

au lieu de simplement

def() 

Hope this helps