我对python很新.
我被要求仅使用字符串命令创建计算器,int / string / float等之间的转换(如果需要),并且使用函数是必需的. while和for循环也可以使用.
程序需要采用x / y或x / y / z形式的输入,其中x y z是任何正数或负数.其中“/”也可以通过加法乘法和减法来代替.并且操作数和运算符之间可以存在任意数量的空格.这是我到目前为止的想法.
我对.,/和*有一个独特的定义.我会为用户输入的内容创建一个函数.我会使用“.lstrip”和“.rstrip”来摆脱空白区域.
现在我遇到的麻烦是创建输入功能.我对功能很新,这基本上就是我所拥有的.我知道这并不多,但我真的不知道如何正确进入这个功能.
def multiplication(x,a,y,b,z):
if (a== "*"):
return x*y
if (b== "*"):
return y*z
def division(x,a,y,b,z):
if (a== "/"):
return x/y
if (b== "/"):
return y/z
def addition(x,a,y,b,z):
if (a== "+"):
return x+y
if (b== "+"):
return y+z
def subtraction(x,a,y,b,z):
if (a== "-"):
return x-y
if (b== "-"):
return y-z
def (x,y,z):
x=0
y=0
z=0
zxc=int(input()):# this is where I get stuck and I don't know how to implement x,y,z into the input.
所有帮助表示赞赏.如果您不确定您提供的代码是否过于强烈以至于我的需求,请在浪费您的时间之前询问,制作我不可能使用的代码.我保证尽快回复.
基本上我试图找到一种方法来分割输入的字符串,然后用它开始计算.
解决方法:
这是使用正则表达式的可能解决方案大纲.错误检查左侧为锻炼.如果这不是作业,你想看到充实的解决方案,view it here
import re
# input is a list of tokens (token is a number or operator)
tokens = raw_input()
# remove whitespace
tokens = re.sub('\s+', '', tokens)
# split by addition/subtraction operators
tokens = re.split('(-|\+)', tokens)
# takes in a string of numbers, *s, and /s. returns the result
def solve_term(tokens):
tokens = re.split('(/|\*)', tokens)
ret = float(tokens[0])
for op, num in <FILL THIS IN>:
# <apply the operation 'op' to the number 'num'>
return ret
# initialize final result to the first term's value
result = solve_term(tokens[0])
# calculate the final result by adding/subtracting terms
for op, num in <FILL THIS IN>:
result += solve_term(num) * (1 if op == '+' else -1)
print result