7
votes

Python: problème avec Raw_Input lisant un numéro

Malheureusement, Raw_Input ne fait pas ce dont j'en ai besoin pour faire. Ce que j'essaie de faire est d'obtenir Totprimes = tout ce que je tape à l'invite. Si je remplace en comptant avec pendant le compte <50 Ce script fonctionne. Si je tape 50 dans l'invite, ce script ne fonctionne pas, j'ai peur Raw_Input n'est pas la fonction que je cherche à utiliser? Voici un extrait de mon code: xxx


2 commentaires

Envisagez de changer le titre sur quelque chose de plus adéquat. P.e.'problème avec Raw_Input lisant un numéro ', ou similaire.


FYI, c'est un problème dans Python 2.x, car vous pouvez comparer des objets de différents types. Dans Python 3.x, il augmentera un TypeError: Types non commandables .


6 Réponses :


12
votes

faire xxx

Raw_Input vous donne une chaîne que vous devez convertir en entier ou à flotteur avant de faire une comparaison numérique.


2 commentaires

Bien qu'il soit préférable de faire cette conversion avant la boucle et de l'enregistrer comme une variable locale. Sinon, vous serez inutilement appelant int à chaque fois autour de la boucle que vous faites la comparaison.


@ncoghlan vous avez raison. J'ai écrit de cette façon de montrer le problème condensé dans une ligne. Je l'ai mis à jour à la version plus efficace que vous référez.



0
votes

Vous devez lancer des topprimes dans un Int comme ceci:

integer = int(totPrimes)


0 commentaires

0
votes

Vous devez juste convertir votre entrée brute dans un entier. Pour votre code, changez simplement votre code comme suit: xxx


0 commentaires

-1
votes

Utilisez l'entrée alors.

Entrée RAW Renvoie la chaîne.

entrée renvoie int.


1 commentaires

Non, entrée dans Python 2 évalue l'expression. Si vous entrez une expression filtrante, elle retournera une chaîne. Si vous entrez une expression numérique, il retournera un nombre (flotteur ou INT en fonction de votre exactitude.




0
votes

Vous devez modifier chaque numéro en "HRS" ou "Taux".

Par exemple: 40 * 10.50 + (H-40) * 10.50 * 1.5 est faux, 40 * r + (H-40) * R * 1.5 est juste .


0 commentaires