Kalkulator w języku Python

Kalkulator w języku Python
D8
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 8 godzin
  • Postów:173
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.?

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:3 minuty
  • Postów:4935
1

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


edytowany 1x, ostatnio: lion137
SL
  • Rejestracja:około 7 lat
  • Ostatnio:8 minut
  • Postów:900
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

Spine
  • Rejestracja:około 22 lata
  • Ostatnio:3 minuty
  • Postów:6685
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...

Kopiuj
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.


🕹️⌨️🖥️🖱️🎮
edytowany 2x, ostatnio: Spine
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:3 minuty
  • Postów:4935
2

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.


tBane
  • Rejestracja:prawie 2 lata
  • Ostatnio:8 minut
  • Lokalizacja:Poznań
  • Postów:319
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


W wolnych chwilach od codzienności programuję hobbystycznie Edytor gier RPG 2D.
Technologie, z których korzystam to C++ oraz SFML 2.6.
Spine
  • Rejestracja:około 22 lata
  • Ostatnio:3 minuty
  • Postów:6685
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.


🕹️⌨️🖥️🖱️🎮
edytowany 2x, ostatnio: Spine
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Laska, z Polski
  • Postów:10086
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.

Kopiuj
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))
Spine
  • Rejestracja:około 22 lata
  • Ostatnio:3 minuty
  • Postów:6685
1

Bez ifów!

Kopiuj
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))))

🕹️⌨️🖥️🖱️🎮
D8
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 8 godzin
  • Postów:173
0

Zadanie zostało rozwiązane przez jego autora:

Kopiuj
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

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:3 minuty
  • Postów:4935
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 :)


ledi12
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Wrocław
1
Kopiuj
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

Robię http response status cody w martwych ciągach
lion137
Czekałem na to :-D
ledi12
Starałem się ;-)
VBService
  • Rejestracja:ponad 16 lat
  • Ostatnio:3 miesiące
1

Nie lepiej: 😀

Kopiuj
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

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

Talk is cheap. Show me the code! - Linus Torvalds
-----------------------------------------------------------------------------------------------------------
Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better. - Edsger W. Dijkstra
edytowany 2x, ostatnio: VBService

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.