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.?
Kalkulator w języku Python
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5023
A umiesz coś w programowanie? To zacznij pisać i jak utkniesz to wrzuć tu.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1020
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6964
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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5023
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.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 536
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6964
lion137 napisał(a):
No nie bardzo, ten kod bierze
expressiondo ewaluacji i zwraca wynik, a nie dwie liczby i działanie; nie mówiąc, żeevaljest "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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 10227
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))
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6964
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))))
- Rejestracja: dni
- Ostatnio: dni
- Postów: 194
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5023
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 :)
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
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
- Rejestracja: dni
- Ostatnio: dni
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

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