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

Operacje arytmetyczne ze stringiem

Object Storage Arubacloud
0 głosów
261 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ź 473 wizyt
pytanie zadane 6 listopada 2022 w Python przez Matlane Użytkownik (560 p.)
0 głosów
1 odpowiedź 263 wizyt
pytanie zadane 6 kwietnia 2021 w Python przez kacper1445 Gaduła (4,880 p.)

92,555 zapytań

141,402 odpowiedzi

319,541 komentarzy

61,939 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...