Svigermors drøm Skrevet 22. juli 2012 Del 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 Lenke til kommentar
PTRN Skrevet 22. juli 2012 Del 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). Lenke til kommentar
Svigermors drøm Skrevet 22. juli 2012 Forfatter Del 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' Lenke til kommentar
etse Skrevet 22. juli 2012 Del 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 Lenke til kommentar
Svigermors drøm Skrevet 22. juli 2012 Forfatter Del Skrevet 22. juli 2012 ja, jeg brukte raw_input istedenfor input ... glemmer det hver gang Thanks anyway Lenke til kommentar
etse Skrevet 22. juli 2012 Del 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 Lenke til kommentar
snippsat Skrevet 22. juli 2012 Del 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 Lenke til kommentar
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å