Strona główna Polish Python Coders Group
   Strona główna   Pomoc Zaloguj się Rejestracja  
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji

Aktualności: PyStok #31 - 8 maja 2018, 18:00, Białystok :: http://pystok.org/pystok-31/
Szukaj Szukaj
Strony: [1]   Do dołu
Drukuj
Wątek: Moj pierwszy wlasny kalkulator :)  (Przeczytany 187 razy)
« : 13:26 16/05/18 »
dexter7d Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 29


Maly krok do przodu ? Uśmiech
Nic szczegolnego ale dziala...

Kod
data=int(input("Enter a number:\n"))
data1=int(input("Enter a number:\n"))
operator=input("Enter an operator:\n" '*' + ':' + '-' + '+')
result=0
ans=[]
ans.append(operator)
for i in range(len(ans)):
   if ans[i] == '*':
       result = data*data1
   if ans[i] == ':':
       result = data/data1
   if ans[i] == '+':
       result = data+data1
   if ans[i] == '-':
       result = data-data1
print(data, operator, data1,'=',result)
Zapisane
« Odpowiedz #1 : 13:34 16/05/18 »
firemark Offline
Advanced Python User

Zobacz profil
**

Reputacja: 14
Wiadomości: 175


Po co ta pętla? Jest kompletnie niepotrzebna. Ba, nawet uszkadza program. Popraw to.

A jak poprawisz, to  zrób z tego funkcję, a nawet 3:

1) pobierze dane i zwróci
2) obliczy i zwróci wynik
3) weźmie wszystkie funkcje i je odpali po kolei.
Zapisane
« Odpowiedz #2 : 13:42 16/05/18 »
Amany Offline
Hello World!

Zobacz profil
*

Reputacja: 7
Wiadomości: 16


Zgadzając się z firemarkiem, proponuję byś dodatkowo popracował nad sprawdzaniem, którego operatora chcesz używać (...użytkownik chce użyć) przy uwzględnieniu tego, że, na przykład:
Kod
'a' == ['a']    # -> False
'a' in ['a']    # -> True

Krótko mówiąc, 'a' to nie to samo co ['a']. Sprawdź sobie w konsoli,
Kod
type('a')
type(['a'])
Zapisane
« Odpowiedz #3 : 13:43 16/05/18 »
dexter7d Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 29


Po co ta pętla? Jest kompletnie niepotrzebna. Ba, nawet uszkadza program. Popraw to.

A jak poprawisz, to  zrób z tego funkcję, a nawet 3:

1) pobierze dane i zwróci
2) obliczy i zwróci wynik
3) weźmie wszystkie funkcje i je odpali po kolei.

Masz racje.
Petla bo najpierw napisalem ciut inaczej a potem chcialem sie sprawdzic  czy moge jeszcze inaczej I sobie wymyslilem petle for.
Dzieki za wskazowki.
Zapisane
« Odpowiedz #4 : 17:26 17/05/18 »
dexter7d Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 29


A ten wyglada lepiej czy jeszcze da sie lepiej napisac?
Nie prosze o gotowca tylko o wskazówkę.

Kod
a=int(input("Enter 1st number\n"))
b=int(input("Enter 2nd number\n"))
operator=input("Enter an operator -, *, +, /, -\n")
def sum(a,b):
return a+b
def subt(a,b):
return a-b
def mult(a,b):
return a*b
def div(a,b):
return a/b
 
if operator == '*':
print("Result=", + mult(a,b))
 
if operator == '/':
print("Result=", + div(a,b))
 
if operator == '-':
print("Result=", + subt(a,b))
 
if operator == '+':
print("Result=", + sum(a,b))
 
Zapisane
« Odpowiedz #5 : 22:57 17/05/18 »
DJangoL Offline
Professional Python User

Zobacz profil
***

Reputacja: 30
Wiadomości: 334


Twój kalkulator szału nie robi, ale powinien dobrze liczyć (z wyjątkiem dzielenia przez zero Chichot  ), a to już coś, bo np. Microsoftowi się to nie udało ( w kalkulatorach w Windows 8 Mobile - kompletna kicha! ).

Dodaj obsługę wyjątków, więcej funkcji, jakieś logarytmy, funkcje trygonometryczne, potęgowanie, etc.

Jak wszystko będzie działało OK, warto pokusić się o GUI, np. w Tk.
Zapisane
« Odpowiedz #6 : 10:49 18/05/18 »
dexter7d Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 29


Zdaje sobie sprawę ze to tylko podstawowe obliczenia i podstawowy kalkulator. Chodzi mi bardziej  o to czy mozna skrocic ten kod ulepszyć. Byc.moze jest napisany zbyt łopatologicznie. Jesli tak to co powinno byc lepiej napisane juz pomijajac GUI i dodatkowe obliczenia jak logarytmy czy funkcje...
Napisałem na dwa sposoby to moze jest jeszcze lepszy sposób. To dla mnie trening.
Zapisane
Strony: [1]   Do góry
Drukuj
Skocz do:  

© 2007 - 2018 Polish Python Coders Group
Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | Theme by PixelSlot