Python - hjälp att omvandla en variabel till integer

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Mmm
Inlägg: 4
Blev medlem: 2 november 2017, 18:57:23

Python - hjälp att omvandla en variabel till integer

Inlägg 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))
bearing
Inlägg: 11229
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

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

Inlägg av bearing »

a = int(time)
a blir en intriger.
Mmm
Inlägg: 4
Blev medlem: 2 november 2017, 18:57:23

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

Inlägg 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..)
bearing
Inlägg: 11229
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

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

Inlägg 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
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43148
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

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

Inlägg 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?
bearing
Inlägg: 11229
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

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

Inlägg av bearing »

Kan hända att det är olika beteende mellan python 2 och 3, men har inte testat i min miljö.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43148
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

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

Inlägg 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...
thebolt
Inlägg: 248
Blev medlem: 10 februari 2008, 17:41:40
Ort: Taipei Taiwan

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

Inlägg 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"
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

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

Inlägg 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
bearing
Inlägg: 11229
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

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

Inlägg 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.
Användarvisningsbild
007sweden
Inlägg: 3500
Blev medlem: 3 mars 2005, 20:18:12
Skype: oo7sweden

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

Inlägg 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
>>>

Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43148
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

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

Inlägg 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.
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

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

Inlägg 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()
Mmm
Inlägg: 4
Blev medlem: 2 november 2017, 18:57:23

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

Inlägg 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?
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43148
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

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

Inlägg 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.
Skriv svar