Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse

det skal fungere helt fint, er du sikker på at variabelen din P er numerisk? Ut i fra feilmeldingen ser det ut som P er en tekst-streng (kanskje fordi du leste input fra brukeren?)

 

I så fall prøv: k = float(p) * 0.453

Lenke til kommentar

aldri bruk input(), da det åpner opp for mye som kan skje som du ikke ønsker. raw_input er det du skal bruke, og så kaster du det heller opp til float om du forventer desimaltall.

 

Noe slikt som dette bruker jeg for å lese input fra brukeren:

 

while 1:
  user_input = raw_input("No: ")
   try:
	   number = float(user_input)
	   break # stop while-loop
   except ValueError:
	   print "that was no number: " + user_input
	   # implicite remain in while loop

Endret av etse
  • Liker 1
Lenke til kommentar
aldri bruk input(), da det åpner opp for mye som kan skje som du ikke ønsker

Grunn til dette er at input() bruker eval() for og konvertere til integer.

Et eksempel viss jeg gir kommadoen som input eval('__import__("os").remove(somefile)') til input().

Ville den slettet somefile viss navet var korrekt.

 

Nå er det vanlig og skrive raw_input() som dette for integer/float return int(raw_input('')) eller float(raw_input('')).

På denne måten trenger man aldrig og bruke input() i python 2.x,

 

Python 3.x har bare input(),denne er ikke likt input() i python 2.x.

input() i python 3 returnerer string,så den er helt like raw_input i python 2.x.

Endret av SNIPPSAT
  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...