我的小示例应用程序的输出如下:
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
这是因为addition()方法将input()作为字符串而不是数字。如何将它们用作数字?
这是我的整个剧本:
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"
"
我已经说过系统发布了两次问题,检查发布时间。不是我的错,我也不能删除这个问题。
你没有close链接吗?
但这并不能立即解决问题。
python的可能副本-将字符串解析为float或int
因为您编写的计算器可能也接受浮动(1.5, 0.03),所以更健壮的方法是使用这个简单的助手函数:
def convertStr(s):
"""Convert string to either int or float."""
try:
ret = int(s)
except ValueError:
#Try float.
ret = float(s)
return ret
这样,如果int转换不起作用,您将得到一个float返回。
编辑:如果您不完全了解python 2.x如何处理整数除法,那么您的division函数也可能导致一些悲伤的面孔。
简而言之,如果你想让10/2等于2.5而不是2,你就需要做from __future__ import division,或者让其中一个或两个论点浮动,就像这样:
def division(a, b):
return float(a) / float(b)
嘿,这很干净,谢谢!
convertStr = float的工作原理几乎相同。
>>> a ="123"
>>> int(a)
123
以下是一些免费代码:
def getTwoNumbers():
numberA = raw_input("Enter your first number:")
numberB = raw_input("Enter your second number:")
return int(numberA), int(numberB)
更多内置函数:/library/functions.html
从主函数调用子函数时,可以将变量转换为int,然后调用。请参考以下代码:
import sys
print("Welcome to Calculator
")
print("Please find the options:
" +"1. Addition
" +"2. Subtraction
" +
"3. Multiplication
" +"4. Division
" +"5. Exponential
" +"6. Quit
")
def calculator():
choice = input("Enter choice
")
if int(choice) == 1:
a = input("Enter first number
")
b = input("Enter second number
")
add(int(a), int(b))
if int(choice) == 2:
a = input("Enter first number
")
b = input("Enter second number
")
diff(int(a), int(b))
if int(choice) == 3:
a = input("Enter first number
")
b = input("Enter second number
")
mult(int(a), int(b))
if int(choice) == 4:
a = input("Enter first number
")
b = input("Enter second number
")
div(float(a), float(b))
if int(choice) == 5:
a = input("Enter the base number
")
b = input("Enter the exponential
")
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()
我在这里做的是在将输入的参数转换为int时调用每个函数,希望这有帮助。
在您的情况下,可以这样更改:
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))
添加DEF(A、B):返回A+B
定义减法(a,b):返回-B
DEF倍增(A、B):返回A*B
DEF部门(A、B):返回A/B
keepProgramrunning=真
打印"欢迎使用计算器!"
保持编程运行时:打印"请选择要执行的操作:"
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)) +"
"
elif choice =="1":
numberA = input("Enter your first number:")
numberB = input("Enter your second number:")
print"Your result is:" + str(subtraction(numberA, numberB)) +"
"
elif choice =="2":
numberA = input("Enter your first number:")
numberB = input("Enter your second number:")
print"Your result is:" + str(multiplication(numberA, numberB)) +"
"
elif choice =="3":
numberA = input("Enter your first number:")
numberB = input("Enter your second number:")
print"Your result is:" + str(division(numberA, numberB)) +"
"
elif choice =="4":
print"Bye!"
keepProgramRunning = False
else:
print"Please choose a valid option."
print"
"
解释一下怎么样?
容易的!
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
也许下面,那么您的计算器就可以使用任意的基数(例如十六进制、二进制、基数7!)等):(未测试)
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
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:"