Prosty kalkulator Python

0

Cześć uczę się pythona. Dzisiaj kodowałem pierwszy program, jest to prosty kalkulator. Co o nim sądzicie? Chętnie przyjmę sugestie i podpowiedzi co zmienić.

0

print("...:::Prosty Kalkulator:::...")

x = int(input("Insert the first number:"))
y = int(input("Insert the second number:"))
z = input("What type of operator you want to use(+,-,*,/,**)")

operators = {"+": x+y, "-": x-y, "": xy, "/": x/y, "": xy}

if z == "+":
print(operators["+"])
elif z == "-":
print(operators["-"])
elif z == "":
print(operators["
"])
elif z == "/":
print(operators["/"])
elif z == "":
print(operators["
"])
else:
print("Error: operator not found(make sure you used the designated operators)")

0
print("...:::Prosty Kalkulator:::...")

x = int(input("Insert the first number:"))
y = int(input("Insert the second number:"))
z = input("What type of operator you want to use(+,-,*,/,**)")

operators = {"+": x+y, "-": x-y, "*": x*y, "/": x/y, "**": x**y}

if z == "+":
    print(operators["+"])
elif z == "-":
    print(operators["-"])
elif z == "*":
    print(operators["*"])
elif z == "/":
    print(operators["/"])
elif z == "**":
    print(operators["**"])
else:
    print("Error: operator not found(make sure you used the designated operators)")

0
  1. Skoro masz słownik, to wystarczy sprawdzić czy z się w nim znajduje tj. if z in operators
  2. z to kiepska nazwa dla pobranego operatora
  3. Może to wiesz, ale i tak warto zaznaczyć: w swoim słowniku trzymasz obliczone już wartości, chociaż potrzebujesz tylko jedną z nich. Teraz nie jest to problemem, ale jeśli przyjdą jakieś zmyślne logarytmy i funkcje trygonometryczne... Jeśli trzymałbyś funkcje (sugeruję lambdy, żeby kod Ci nie spuchnął) to miałbyś możliwość obliczania tych rzeczy sopiero gdy będą potrzebne
0

Chodzi ci o to w punkcie 3 żeby zdefiniować funkcje dla operatorów ?

0
funcs = {
    "+": (lambda: x+y)
# etc
}
0

Nie rozumiem czemu lepsze jest tu zastosowanie lambdy. Możesz mi wytłumaczyć

0

Ponieważ obliczasz rzeczy których nie użyjesz, i.e. przy większej ilości obliczeń może to spowolnić program o całe rzędy wielkości.

Przykład z funkcjami na sterydach:

import operator as op
from functools import reduce

user_input = input()
tokens = user_input.split()
assert(len(tokens) == 3)

operator = tokens[1]
args = map(int, [tokens[0], tokens[2]])

reducers = {
	'+': op.add,
	'-': op.sub,
	'*': op.mul,
	'/': op.truediv
}

assert(operator in reducers)
result = reduce(reducers[operator], args)

print("{} = {}".format(user_input, result))
0

Szczerze to nie widzę tego w tych przykładach funkcji. Ale rozumiem że funkcja lambda po prostu wykonuje obliczenia dopiero gdy jest wzywana tak?

0

prosty kalkulator w pythonie - przyjmuje na wejsciu cale dzialanie, nie tylko 2+2 ale i bardziej skomplikowane rzeczy jak np. 2*2+3*3-2*(5-3)

print input()

w pythonie 3:

print(eval(input()))
0

W sumie nie pomyślałem o tym na wieczór to zmienię i wrzucę nową wersję

1 użytkowników online, w tym zalogowanych: 0, gości: 1