Sida 1 av 3

Python - hjälp att omvandla en variabel till integer

Postat: 2 november 2017, 19:05:47
av Mmm
Hej,
har precis börjat lära mig Pythonprogrammering och hittar inte lösningen till följande: Vill mata in två värden med input(). Sedan kunna behandla dessa matematiskt och då ha dem i integer-typ. Men det blir bara som textsträngar. Se kod nedan. Nån som kan hjälpa till? Tack på förhand.

time = input('How many hours have you worked?\n')
rate = input('What is your hourly rate?\n')
int(time) #try to convert time to integer
print(time)
print(rate)
total=time+rate
print(total)
print (type(time)) #show what type the variable time is
print (type(rate))

Re: Python - hjälp att omvandla en variabel till integer

Postat: 2 november 2017, 19:10:30
av bearing
a = int(time)
a blir en intriger.

Re: Python - hjälp att omvandla en variabel till integer

Postat: 2 november 2017, 19:27:07
av Mmm
Tack!
Nu har jag löst det med din hjälp. Kan jag definiera det som en integer redan i "input()-läget? (Jag löste det med att omvandla time till a, i två steg..)

Re: Python - hjälp att omvandla en variabel till integer

Postat: 2 november 2017, 19:35:17
av bearing
Det borde gå. Oavsett tror jag det blir en exception om du skriver t.ex. bokstäver. Får lägga en try..catch runt

Re: Python - hjälp att omvandla en variabel till integer

Postat: 2 november 2017, 20:45:15
av sodjan
Ska det inte vara "total=time * rate" ?

Hur som helst...

Kod: Markera allt

$ python
Python 2.7.8 (default, Oct 31 2014, 14:12:12) [DECC] on OpenVMS
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> time = input('How many hours have you worked? ')
How many hours have you worked? 25
>>> rate = input('What is your hourly rate? ')
What is your hourly rate? 550
>>> total = time * rate
>>> print total
13750
>>>
>>> print (type(time))
<type 'int'>
Vad fick du för fel?

Re: Python - hjälp att omvandla en variabel till integer

Postat: 2 november 2017, 21:45:23
av bearing
Kan hända att det är olika beteende mellan python 2 och 3, men har inte testat i min miljö.

Re: Python - hjälp att omvandla en variabel till integer

Postat: 3 november 2017, 00:09:32
av sodjan
Ja, jag tänkte lite på det då jag såg syntaxen "print (type(time))".
En av ändringar mellan V2 och V3 är väl att "print" i V3 är en
funktion (och alltid måste ha sina argument inom () ), medan
det i V2 var ett kommando som tog parametrar direkt utan ().

I V2 fungerar "print type(time)" lika bra...

Men i så fall är det även skillnader i "input".

Men å andra sidan så verkade det som att Mmm hade problem med
"int(time)", och det fungerar väl varken i V2 eller V3, eller hur? Man
kan inte ändra typ på en variabel bara så där utan vidare...

Re: Python - hjälp att omvandla en variabel till integer

Postat: 3 november 2017, 03:10:13
av thebolt
I Python (och diverse andra språk) går det bra att göra sträng->integer med en cast som bearing skrev.. Förutsatt att det är en giltig integer då, annars får man ett exception av typen "ValueError"

Re: Python - hjälp att omvandla en variabel till integer

Postat: 3 november 2017, 08:52:30
av johano
sodjan skrev: Men å andra sidan så verkade det som att Mmm hade problem med
"int(time)", och det fungerar väl varken i V2 eller V3, eller hur? Man
kan inte ändra typ på en variabel bara så där utan vidare...
Jo

Kod: Markera allt

>>> s = "123"
>>> n = int(s)
>>> s
'123'
>>> n
123
>>> 

/j

Re: Python - hjälp att omvandla en variabel till integer

Postat: 3 november 2017, 09:22:12
av bearing
Python 3.5.2:

Kod: Markera allt

>>> time = input("Tid:")
Tid:123
>>> time
'123'
>>> time + 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly
>>> int(time) + 1
124
>>>
Har för mig att detta är en skillnad mellan v2 och v3. I v3 konverterar den inte automatiskt.

Re: Python - hjälp att omvandla en variabel till integer

Postat: 3 november 2017, 12:37:46
av 007sweden

Kod: Markera allt

time = False
while not time:
    try:
        time = int(input("Write time: "))
    except ValueError:
        print("Value is not a number, try again!")
Så hade jag gjort för att få lite koll på *vad* man skriver in också, snutten snurrar tills man fått en giltig integer inskriven.

Edit:
Eller medans jag håller på:

Kod: Markera allt

def input_int(message):
    number = False
    while not number:
        try:
            number = int(input(message))
        except ValueError:
            print("Value is not a number, try again!")
    return number
Lägg denna snutt längst upp i ditt program.
Detta kallas för en funktion, vet du att du ska göra samma sak flera gånger i ditt program kan det vara värt att skapa funktioner.

Kod: Markera allt

>>> input_int("Hejsan: ")
Hejsan: h
Value is not a number, try again!
Hejsan: 6
6
>>> input_int("a: ") + input_int("b: ")
a: 5
b: 8
13
>>>


Re: Python - hjälp att omvandla en variabel till integer

Postat: 3 november 2017, 16:34:39
av sodjan
> Jo

Nej!

s och n är två olika variabler. Du ändrar *inte* typ på en variabel med ditt exempel.

Det var ju uppenbart att Mmm trodde att "int(time)" skulle byta typ
på variabeln time från en textsträng till integer.

Re: Python - hjälp att omvandla en variabel till integer

Postat: 3 november 2017, 22:48:01
av Mr Andersson
python2:
input() gör automatisk tolkning av typ från inputsträngen.
raw_input() ger inputsträngen direkt.

python3:
input() är ersatt av raw_input()

Re: Python - hjälp att omvandla en variabel till integer

Postat: 5 november 2017, 10:51:54
av Mmm
Tack för hjälpen. Lösningen blev att skapa en ny variabel som jag satte som en integer.

Jag har hittat en pdf-lärobok (python for everybody) på nätet som jag försöker läsa mig igenom, förstå och göra övningarna. Kanske skulle jag skapa en ny tråd för en ny problemställning, men jag slänger ut den här så får jag se om det funkar.

Jag lägger in detta i ett skript, kopierat direkt ur läroboken, sid 45

import random
for i in range(10):
x = random.random()
print(x)


Min version på python är 3.6.3. Felmeddelandet är:

Traceback (most recent call last):
File "C:\Users\Mmm\Documents\PythonMappTestFiler\random.py", line 1, in <module>
import random
File "C:\Users\Mmm\Documents\PythonMappTestFiler\random.py", line 3, in <module>
x = random.random()
TypeError: 'module' object is not callable

Betyder det att jag inte lyckats installerat random-modulen?

Re: Python - hjälp att omvandla en variabel till integer

Postat: 5 november 2017, 12:48:31
av sodjan
Vad heter ditt eget script?

Det fungerar för mig, men inte om jag kallar mitt eget script for "random.py", då blir Python bli lite förvirrat.

Så sätt inte samma namn på dina egna .py filer som på de moduler du tänker importera.