• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Operacje arytmetyczne ze stringiem

42 Warsaw Coding Academy
0 głosów
430 wizyt
pytanie zadane 7 listopada 2021 w Python przez magda_19 Gaduła (3,080 p.)

Witam,

Piszę program, który przyjmuje 3 argumenty; dwie liczby oraz opercję do wykonania. Np. do_arithmetic(2,3,’*’) powinna zwrócić 6. Mam do wykonania 4 operacje; dodawanie, mnożenie, odejmowanie i dzielenie. Mój kod wykonuje to wszystko, tylko mam problem z outputem. Po wywołaniu 4 funkcji z różnymi działanimi, powinnam otrzymać 4 wyniki, natomiast otrzymuję 16. Każde wywołanie funkcji przechodzi przez 4 operacje, a powinno tylko przez jedną. Ostatnie 3 linijki komentarza to sprawdzenie czy użytkownik nie wpisał innego znaku. Zakomentowane, bo nie jestem pewna gdzie je wstawić. 

Oto mój kod:

#Q1.a

do_arithmetic(24,-7,'add') 

do_arithmetic(6,6,'multiply')
   
do_arithmetic(4,0,'/')

do_arithmetic(3,9,'-')


def do_arithmetic(x, y, op):
    op == 'add'                    #by default opp is set to 'add'
    if(op == 'add' or '+'):
      print(float(x+y))
    if(op == 'subtract' or '-'):
      print(float(x-y))              #returned values are float type
    if(op == 'multiply' or '*'):
      print(float(x*y))  
    if(op == 'divide' or '/'):
      if(y == 0):                  #if does not allow user to put 0 in the denominator
        print('Division by 0!')   
        return None              
      else:
        print(float(x/y)) 
     
    ##if(op!= 'add' or '+' or 'multiply' or '*' or 'subtract' or '-' or 'divide' or '/'):
      ##print('Unknown operation')
      ##return None   
    pass

 

1 odpowiedź

0 głosów
odpowiedź 7 listopada 2021 przez edutomek Dyskutant (8,380 p.)
wybrane 7 listopada 2021 przez magda_19
 
Najlepsza
def do_arithmetic(x, y, op = 'add'):
  if op in ['add', '+']:
    ...
  elif op in ...
    ..
  else:
    print('Unknown operation')

Uwagi do Twojego kodu:

1) op == 'add'
To jest wyrażenie typu boolean (czy bool, nie pamiętam, jak to się w Pythonie nazywa), więc nie zrobi niczego. Tzn. będzie to albo True, albo False, ale nigdzie nic z tą wartością w Twoim kodzie się nie dzieje.
Domyślne wartości parametrów w Pythonie zapisujemy tak, jak podałem w przykładowym kodzie.

2) if op == 'add' or '+'

Domyślam się, że chodzi o: if (op == 'add') or (op == '+')

Bo tak, jak zapisałaś, to znaczy: jeśli (op jest równe 'add'), albo '+' - a ponieważ ten '+' nie jest pustym napisem, to będzie prawdziwy. Więc ta część z "albo" zawsze będzie prawdziwa - dlatego działają w kodzie wszystkie warunki, choć powinien tylko jeden.

3) To pass na samym końcu jest zbędne - niczego nie wnosi. Można to usunąć.

pass dajemy tam, gdzie MUSI być jakaś instrukcja (bo tak wynika ze składni Pythona), a nie chcemy niczego robić.
 

4) return None też nie trzeba pisać. Python domyślnie zwraca z funkcji None, jeśli nie zwrócimy czegoś innego.

komentarz 7 listopada 2021 przez magda_19 Gaduła (3,080 p.)
Dziękuję za odpowiedź i wskazówki.

Podobne pytania

0 głosów
1 odpowiedź 747 wizyt
pytanie zadane 6 listopada 2022 w Python przez Matlane Użytkownik (560 p.)
0 głosów
1 odpowiedź 436 wizyt
pytanie zadane 6 kwietnia 2021 w Python przez kacper1445 Mądrala (5,050 p.)

93,382 zapytań

142,382 odpowiedzi

322,539 komentarzy

62,741 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...