Dziwny wynik przy funkcji dodawania

1

Cześć,

zaczęłam się uczyć pythona i... cóż... wyjątkowy to język :) Męczę się nad prostym problemem - definicją funkcji dodawania. Mam taki oto kod:

def dodawanie(a, b):
    return a+b

zmienna1 = input('Podaj pierwszą liczbę: ')
zmienna2 = input('Podaj drugą liczbę: ')

print('Wynik: ', dodawanie(zmienna1, zmienna2))

Z założenia funkcja dodawanie powinna zwrócić mi sumę liczb. Natomiast gdy wpisuję po kolei do zmiennej1 10 a do zmiennej2 20, wówczas zamiast otrzymać wynik 30 dostaję wynik 1020. Nie pomógł również zapis return int(a+b). Domyślam się, że błąd jest banalny. Co robię źle?

Pozdrawiam!

3

ponieważ dodajesz 'literały' a nie liczby?
tak zgaduję, sam nie znam pythona
mam nadzieję, że któryś pythonowiec Tobie odpowie poprawnie

2

Poprzednik ma racje, input zawsze wczytuje string. Dodawania takowych oznacza ich sklejenie, więc wynik jest taki a nie inny. return int(a) + int(b) rozwiązuje problem (robi z nich int-y i wtedy dodaje)

2

Jak wyżej input zawsze jest stringiem; poczytaj o typowaniu dynamicznym.
https://en.m.wikipedia.org/wiki/Dynamic_programming_language

3

Tak jak wcześniej, dodajesz tekst zamiast liczb, zmień na:

zmienna1 = int(input('Podaj pierwszą liczbę: '))
zmienna2 = int(input('Podaj drugą liczbę: '))
2

Dokładnie jak poprzednicy pisali. W pythonie jak nie podasz typu zmiennej ona z standardu jest stringiem. Jeśli nie wiesz kim typem jest dana zmienna można zrobić type(zmienna). To zwraca typ zmiennej. Jeśli chcesz dokładnie mieć INT musisz wskazać na samym początku jakim typem jest dana zmienna lub w dalszej części kodu zrobić konwersję typów.

0

Dzięki za info, w domu to sprawdzę. Czyli dobrze kombinowałam z konwersją int tylko źle ro zrobiłam :) Dziękuję!

1

Pamiętaj o jednym jeszcze. Zadeklarowanie typu zmiennej na początku ma wiele zalet. IDE od razu podpowiada co masz wpisać czy int czy string. Jeżeli wpiszesz coś złego wykrzyczy to, nie robi tego jeśli nic nie zadeklarujesz bo nie wie jaki tym zmienna ma przechowywać. Jak odwołujesz się do obiektu IDE podpowiada co obiekt przyjmuje w parametrach i pilnuje tego.
Dlatego warto deklarować typy zmiennych na początku mimo wszytko.

0 użytkowników online, w tym zalogowanych: 0, gości: 0