Svigermors drøm Skrevet 22. juli 2012 Skrevet 22. juli 2012 Hei ! Jeg lager en liten kalkulator som gjør om fra pounds til kilo. Matten er jo slik at 1 pound = 0,4535 kilo. Jeg får opp en feilmelding om float. Noen som vet hvordan jeg kan bruke nummer med decimaler i python ? Takker for alle svar
PTRN Skrevet 22. juli 2012 Skrevet 22. juli 2012 Hva sier feilmeldingen? Pass på at du konverterer alle verdiene du jobber med til float før du bruker dem. Det oppnår du ved float(variabel).
Svigermors drøm Skrevet 22. juli 2012 Forfatter Skrevet 22. juli 2012 Traceback (most recent call last): File "C:\Users\xxxx xxxxxx\Documents\Python\p2k.py", line 3, in <module> k = p * 0.45359237 TypeError: can't multiply sequence by non-int of type 'float'
etse Skrevet 22. juli 2012 Skrevet 22. juli 2012 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
Svigermors drøm Skrevet 22. juli 2012 Forfatter Skrevet 22. juli 2012 ja, jeg brukte raw_input istedenfor input ... glemmer det hver gang Thanks anyway
etse Skrevet 22. juli 2012 Skrevet 22. juli 2012 (endret) 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 22. juli 2012 av etse 1
snippsat Skrevet 22. juli 2012 Skrevet 22. juli 2012 (endret) 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 22. juli 2012 av SNIPPSAT 1
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå