Kalkulator w języku Python

0

Czy mógłbym prosić o pomoc w rozwiązaniu zadania o treści: Zaimplementuj blok kodu, który pyta o dwie liczby i działanie (+,-,*,/), jakie chcemy wykonać na tych liczbach, i zwraca wynik.?

1

A umiesz coś w programowanie? To zacznij pisać i jak utkniesz to wrzuć tu.

0

ChatGPT. To co pytasz to podstawy podstaw. Przerób jakiś tutorial, możesz też zapytać ChatuGPT, żeby ci wytłumaczył co każda linia robi

2

To zadanie jest bez sensu dla Pythona. Możesz całą formułkę wrzucić w funkcję eval i nie musisz nawet pytać o dwie liczby...

f = input("wpisz dzialanie, np. 2+2: ")
print(eval(f))

Ale edukacyjnie zawsze to jakiś trening podstaw...
Pobierasz liczby jako łańcuchy. Konwertujesz te łańcuchy na typ liczbowy. Pobierasz symbol operacji i piszesz serię instrukcji warunkowych.
A to wszystko jeszcze wsadzasz do pętli.

1

No nie bardzo, ten kod bierze expression do ewaluacji i zwraca wynik, a nie dwie liczby i działanie; nie mówiąc, że eval jest "niezdrowy":) a i wartości dydaktycznej też nie posiada.

0

Najpierw pobierasz od użytkownika dwie liczby, następnie pobierasz znak operacji i w zależności od tego znaku wykonujesz dane działanie na liczbach. Wynik działania zwracasz na ekran. Nic trudnego

0
lion137 napisał(a):

No nie bardzo, ten kod bierze expression do ewaluacji i zwraca wynik, a nie dwie liczby i działanie; nie mówiąc, że eval jest "niezdrowy":) a i wartości dydaktycznej też nie posiada.

Ale takie dwie linijki robią o wiele bardziej zaawansowany kalkulator niż wymaga treść zadania ;)

Wiem, że taki eval jest niebezpieczny, bo pozwala odpalić dowolny kod wprowadzony przez użytkownika.

Po prostu Python ma takie bajery dostępne bez dodatkowych modułów, że można by treści zadań dostosować do takiego stanu rzeczy.
Nie robić czegoś takiego, że piszemy w Pythonie, ale zadania rozwiązujemy tak jakbyśmy pisali w C.

1
darek88 napisał(a):

Czy mógłbym prosić o pomoc w rozwiązaniu zadania o treści: Zaimplementuj blok kodu, który pyta o dwie liczby i działanie (+,-,*,/), jakie chcemy wykonać na tych liczbach, i zwraca wynik.?

Tutaj masz zadanie dla dwóch operacji. Sam rozszerz o pozostałe dwie.

first = input("Podaj pierwszą liczbę")
second = input("Podaj drugą liczbę")
operation = input("Podaj działanie [+, -]")

if operation == '+':
  result = int(first) + int(second)
if operation == '-':
  result = int(first) - int(second)

print("Wynik działania to: " + str(result))
1

Bez ifów!

first = input("Podaj pierwszą liczbę: ")
second = input("Podaj drugą liczbę: ")
operation = input("Podaj działanie [+, -, *, /]: ")

formulas = {
	'+': lambda x,y: x + y,
	'-': lambda x,y: x - y,
	'*': lambda x,y: x * y,
	'/': lambda x,y: x / y,
}

print("Wynik działania to: " + str(formulas[operation](int(first), int(second))))
0

Zadanie zostało rozwiązane przez jego autora:

def check_for_float(input1):
    try:
        val = float(input1)                   # Only allows input floats
        return val
    except (ValueError, TypeError):
        print('Error, please enter numeric input')
        return False
        
count = 0                                 # Initializes values
total = 0.0
average = 0.0
 
while True:                               # Stays in loop until break
    input_number = input('Enter a number: ')
    if input_number == 'done':
        break                             # Exits the while loop
 
    number = check_for_float(input_number)
    if not number:
        continue
 
    count += 1                            # Counter
    total = total + number                # Running total
 
# Ensures count is not 0 which would cause division error
if count:
    average = total / count               # Computes the average
 
print(total, count, average)

jednakże próba jego uruchomienia generuje błędy

1

To masz coś nie tak z formatowaniem, albo źle przepisujesz, bo kod działa, oczywiście nie robi tego o co pytałeś w pierwszym poście :)

1
def dodaj_do_10():
    suma = 0
    liczba = 1

    if liczba == 1:
        suma += liczba
        liczba += 1
    if liczba == 2:
        suma += liczba
        liczba += 1
    if liczba == 3:
        suma += liczba
        liczba += 1
    if liczba == 4:
        suma += liczba
        liczba += 1
    if liczba == 5:
        suma += liczba
        liczba += 1
    if liczba == 6:
        suma += liczba
        liczba += 1
    if liczba == 7:
        suma += liczba
        liczba += 1
    if liczba == 8:
        suma += liczba
        liczba += 1
    if liczba == 9:
        suma += liczba
        liczba += 1
    if liczba == 10:
        suma += liczba
    else:
        pass  # W razie gdybyśmy chcieli zrobić coś ekstra :D

    return suma
1

Nie lepiej: 😀

def dodaj_do_10():
    suma = 0
    for liczba in range(1, 11):
        suma += liczba
    return suma

lub korzystając ze wzoru na sumę ciągu arytmetycznego
screenshot-20250109012644.png

def dodaj_do_10():
    return (10 * (1 + 10)) // 2

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.