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.?
A umiesz coś w programowanie? To zacznij pisać i jak utkniesz to wrzuć tu.
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
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.
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.
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
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, żeeval
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.
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))
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))))
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
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 :)
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
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