2017-10-14 12 views
0

Impossible de trouver une réponse à ce scénario spécifique, toutes mes excuses si je l'ai manqué.Impossible de comparer le retour de Len w/défini par l'utilisateur

Tentative de définition d'une fonction dans laquelle un fichier texte est lu, les mots sont supprimés et écrits dans str, et les mots ayant une longueur de plage définie par l'utilisateur sont affichés.

fichier: "Bonjour", "Salut", "Salutations", "Hola"

Gamme: Min: 3 Max: 5

sortie: "Bonjour", "Salut", "Hola"

Lorsque l'on compare len des mots à la minute et l'entrée de valeur max, je reçois l'erreur:

TypeError: '>' pas pris en charge entre les instances de 'int' et 'str'

Extrait de code:

with open(filename) as f: 
    lines = f.readlines() 
    for line in lines: 
     words = line.split() 
     for word in words: 
      print(word) 
      print(len(word)) 
      if len(word) >= smallest_word and len(word) <= largest_word: 
       word_list.append(word) 

J'étais certain rendement len ​​type int, suis-je tort? Peut-être autre chose que je néglige?

Nous vous remercions de votre aide! On a simplement oublié de définir l'entrée de l'utilisateur comme int.

+1

Où min et max définis? (Et notez, ce sont déjà les noms des fonctions intégrées, que vous êtes en train d'observer. Vous devez utiliser des noms différents.) –

+0

Bon point! Je vais changer ceux-là. Ils sont définis dans main() avec l'entrée de l'utilisateur. – bona221

+0

Mais le fait est que ce sont ceux qui semblent être des chaînes, c'est pourquoi j'ai demandé à voir leurs définitions. –

Répondre

0

L'entrée par défaut à str et len ​​renvoyait correctement int tout le temps.

Changé:

smallest_word = input("Please enter the minimum letter amount: ") 
    largest_word = input("Please enter the maximum letter amount: ") 

Pour:

smallest_word = int(input("Please enter the minimum letter amount: ")) 
    largest_word = int(input("Please enter the maximum letter amount: "))