Le résultat obtenu pour mon petit exemple d'application est le suivant:
Welcome to the Calculator!
Please choose what you'd like to do:
0: Addition
1: Subtraction
2: Multiplication
3: Division
4: Quit Application
0
Enter your first number: 1
Enter your second number: 1
Your result is:
11
En effet, la méthode addition () considère que input () est une chaîne et non un nombre. Comment puis-je les utiliser comme nombres?
Voici mon script entier:
def addition(a, b):
return a + b
def subtraction(a, b):
return a - b
def multiplication(a, b):
return a * b
def division(a, b):
return a / b
keepProgramRunning = True
print "Welcome to the Calculator!"
while keepProgramRunning:
print "Please choose what you'd like to do:"
print "0: Addition"
print "1: Subtraction"
print "2: Multiplication"
print "3: Division"
print "4: Quit Application"
#Capture the menu choice.
choice = raw_input()
if choice == "0":
numberA = raw_input("Enter your first number: ")
numberB = raw_input("Enter your second number: ")
print "Your result is:"
print addition(numberA, numberB)
Elif choice == "1":
numberA = raw_input("Enter your first number: ")
numberB = raw_input("Enter your second number: ")
print "Your result is:"
print subtraction(numberA, numberB)
Elif choice == "2":
numberA = raw_input("Enter your first number: ")
numberB = raw_input("Enter your second number: ")
print "Your result is:"
print multiplication(numberA, numberB)
Elif choice == "3":
numberA = raw_input("Enter your first number: ")
numberB = raw_input("Enter your second number: ")
print "Your result is:"
print division(numberA, numberB)
Elif choice == "4":
print "Bye!"
keepProgramRunning = False
else:
print "Please choose a valid option."
print "\n"
Puisque vous écrivez une calculatrice qui accepterait vraisemblablement les flottants (1.5, 0.03
), une méthode plus robuste consisterait à utiliser cette fonction d’aide simple:
def convertStr(s):
"""Convert string to either int or float."""
try:
ret = int(s)
except ValueError:
#Try float.
ret = float(s)
return ret
Ainsi, si la conversion int ne fonctionne pas, un float est renvoyé.
Edit: Votre fonction division
peut également donner des visages tristes si vous n’êtes pas pleinement conscient de comment python 2.x gère la division entière .
En bref, si vous voulez que 10/2
soit égal à 2.5
et pas2
, vous devrez faire from __future__ import division
ou transtyper un des arguments ou les deux pour flotter, comme suit:
def division(a, b):
return float(a) / float(b)
>>> a = "123"
>>> int(a)
123
Voici un code de billet de faveur:
def getTwoNumbers():
numberA = raw_input("Enter your first number: ")
numberB = raw_input("Enter your second number: ")
return int(numberA), int(numberB)
Peut-être que votre calculatrice peut utiliser la base de nombre arbitraire (par exemple, hexadécimal, binaire, base 7! Etc.): (non testé)
def convert(str):
try:
base = 10 # default
if ':' in str:
sstr = str.split(':')
base, str = int(sstr[0]), sstr[1]
val = int(str, base)
except ValueError:
val = None
return val
val = convert(raw_input("Enter value:"))
# 10 : Decimal
# 16:a : Hex, 10
# 2:1010 : Binary, 10
facile!
if option == str(1):
numberA = int(raw_input("enter first number. "))
numberB= int(raw_input("enter second number. "))
print " "
print addition(numberA, numberB)
etc etc etc
def addition (a, b): retourne a + b
def soustraction (a, b): retourne a - b
def multiplication (a, b): retourne a * b
def division (a, b): retourne a/b
keepProgramRunning = True
print "Bienvenue dans la calculatrice!"
pendant que keepProgramRunning:
print "S'il vous plaît choisissez ce que vous souhaitez faire:"
print "0: Addition"
print "1: Subtraction"
print "2: Multiplication"
print "3: Division"
print "4: Quit Application"
#Capture the menu choice.
choice = raw_input()
if choice == "0":
numberA = input("Enter your first number: ")
numberB = input("Enter your second number: ")
print "Your result is: " + str(addition(numberA, numberB)) + "\n"
Elif choice == "1":
numberA = input("Enter your first number: ")
numberB = input("Enter your second number: ")
print "Your result is: " + str(subtraction(numberA, numberB)) + "\n"
Elif choice == "2":
numberA = input("Enter your first number: ")
numberB = input("Enter your second number: ")
print "Your result is: " + str(multiplication(numberA, numberB)) + "\n"
Elif choice == "3":
numberA = input("Enter your first number: ")
numberB = input("Enter your second number: ")
print "Your result is: " + str(division(numberA, numberB)) + "\n"
Elif choice == "4":
print "Bye!"
keepProgramRunning = False
else:
print "Please choose a valid option."
print "\n"
Lorsque vous appelez vos sous-fonctions à partir de vos fonctions principales, vous pouvez convertir les variables en int, puis appeler. Veuillez vous référer au code ci-dessous:
import sys
print("Welcome to Calculator\n")
print("Please find the options:\n" + "1. Addition\n" + "2. Subtraction\n" +
"3. Multiplication\n" + "4. Division\n" + "5. Exponential\n" + "6. Quit\n")
def calculator():
choice = input("Enter choice\n")
if int(choice) == 1:
a = input("Enter first number\n")
b = input("Enter second number\n")
add(int(a), int(b))
if int(choice) == 2:
a = input("Enter first number\n")
b = input("Enter second number\n")
diff(int(a), int(b))
if int(choice) == 3:
a = input("Enter first number\n")
b = input("Enter second number\n")
mult(int(a), int(b))
if int(choice) == 4:
a = input("Enter first number\n")
b = input("Enter second number\n")
div(float(a), float(b))
if int(choice) == 5:
a = input("Enter the base number\n")
b = input("Enter the exponential\n")
exp(int(a), int(b))
if int(choice) == 6:
print("Bye")
sys.exit(0)
def add(a, b):
c = a+b
print("Sum of {} and {} is {}".format(a, b, c))
def diff(a,b):
c = a-b
print("Difference between {} and {} is {}".format(a, b, c))
def mult(a, b):
c = a*b
print("The Product of {} and {} is {}".format(a, b, c))
def div(a, b):
c = a/b
print("The Quotient of {} and {} is {}".format(a, b, c))
def exp(a, b):
c = a**b
print("The result of {} to the power of {} is {}".format(a, b, c))
calculator()
Voici ce que j’ai fait: j’ai appelé chacune des fonctions lors de la conversion des paramètres entrés en int. J'espère que cela a été utile.
Dans votre cas, cela pourrait être changé comme ceci:
if choice == "0":
numberA = raw_input("Enter your first number: ")
numberB = raw_input("Enter your second number: ")
print "Your result is:"
print addition(int(numberA), int(numberB))