2013-10-13 1 views
0
import operator 

def mkEntry(file1): 
    results = [] 
    for line in file1: 
     lst = line.rstrip().split(",") 
     lst[2] = int(lst[2]) 
     results.append(lst) 
    return print(sorted(results, key=operator.itemgetter(1,2))) 


def main(): 
    openFile = 'names/' + 'yob' + input("Enter the Year: ") + '.txt' 
    file1 = open(openFile) 
    mkEntry(file1) 

main() 

fichier:Python impression la chaîne Résultat

Emily,F,25021 
Emma,F,21595 
Madison,F,20612 
Olivia,F,16100 
Joaquin,M,711 
Maurice,M,711 
Kade,M,701 
Rodrigo,M,700 
Tate,M,699 

Comment puis-je imprimer le résultat ressemble à ceci: 1. Nom (Sexe): Nombres au lieu de [ 'nom', « sexe ', nombres]

J'ai du mal à faire la chose de chaîne. Cela ne me donnera pas le bon résultat. De l'aide?

Merci

Répondre

2

return print(sorted(results, key=operator.itemgetter(1,2))) ne fait pas ce que vous attendez.

Parce que print() renvoie None, votre fonction va return None. Débarrassez-vous de la déclaration d'impression (si vous souhaitez imprimer la ligne, il suffit de mettre avant le retour)

Ensuite, vous pouvez faire dans votre fonction main():

for person in mkEntry(file1): 
    print("1. {0} ({1}): {2}".format(*person)) 
+0

Je l'ai fixé. Je l'ai fait, il imprime ceci: '['Shelly', 'F', 975]' au lieu de '1. Shelly (F): 975' – Singh2013

+0

@ Singh2013 J'ai édité ma réponse – TerryA

+0

Edit: Je l'ai eu. Merci mec!!! – Singh2013