1
votes

Python: Conversion d'une valeur None de la fonction print () en une chaîne

J'essaie d'écrire une fonction qui prend une valeur de liste comme argument et renvoie une chaîne avec tous les éléments séparés par une virgule et un espace, avec 'et' insérés avant le dernier élément.

Par exemple, passer la liste 'spam' qui contient les valeurs ['pommes', 'bananes', 'tofu', 'chats'] , renverrait: "pommes, bananes, tofu et chats ".

J'ai écrit le code suivant:

def thisIsIt(alist):
  alist.insert(-1, 'and')
  alist1 = alist[:-2]
  alist2 = alist[-2:]
  for item in alist1:
    print(item, end = ", ")

  for item in alist2:
    print(item, end = " ")

qui renvoie: pommes, bananes, tofu et chats. Cependant, il est imprimé en tant que non-type, au lieu d'une chaîne. Comment puis-je corriger cela s'il vous plaît?


3 commentaires

Cependant, il est imprimé sous forme de non-type, au lieu d'une chaîne Comment le savez-vous?


Je pense que vous avez ce que vous imprimez et ce que vous retournez à l'envers; cette fonction ne renvoie rien, mais imprime certainement quelque chose.


Peut-être recherchez-vous une fonction similaire à ce < / a>


3 Réponses :


0
votes

Dans tous les cas, si vous voulez une solution différente et souhaitez qu'elle renvoie une chaîne, vous pouvez utiliser la puissance de str.join () en python:

def thisIsIt(alist):
  resultString = ", ".join(alist[:-2] + [" and ".join(alist[-2:])])
  return resultString

myList = ['apples', 'bananas', 'tofu', 'cats']
myListAsString = thisIsIt(myList)
print(myListAsString)
#apples, bananas, tofu and cats 


0 commentaires

0
votes

Code:

apples, bananas, tofu and cats 

Sortie:

list_sample = ['apples', 'bananas', 'tofu', 'cats']

for i in range(0,len(list_sample)):
    if i < len(list_sample)-1 and i != len(list_sample)-2:
        print(list_sample[i],end = ", ")
    elif i == len(list_sample)-2:
        print(list_sample[i],end = " and ")
    else:
        print(list_sample[i])


0 commentaires

0
votes

J'ai essayé KISS . (Keep It Simple Stupid)

spam = ['apples', 'bananas', 'tofu', 'cats', 'oranges']

def newlist(x):
    myStr = ''    
    if len(x) != 0:
        for i in range(len(x)-1):
            myStr += str(x[i]+', ')
    return(myStr + 'and ' + x[-1]) 

newlist(spam)

Je pense que pour les débutants comme moi, essayez de garder les choses simples, les gars!


0 commentaires