小编典典

Python创建计算器

python

我对python相当陌生。

我被要求仅使用字符串命令,int / string / float等之间的转换(如果需要)以及使用函数来创建计算器。while和for循环也可以使用。

程序需要采用x / y或x / y / z形式的输入,其中xyz是任何正数或负数。其中“
/”也可以用加法乘除法代替。并且在操作数和运算符之间可以存在任意数量的空格。这是我到目前为止的想法。

我将对+,-,/和*有一个唯一的定义。我会为用户输入的内容创建一个函数。我将使用“ .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.

感谢所有帮助。如果不确定所提供的代码是否满足我的需求,请在浪费我的时间之前进行询问,以使我无法使用这些代码。我保证尽快答复。

基本上,我试图找到一种方法来 分割 输入的字符串,然后开始计算。


阅读 193

收藏
2021-01-20

共1个答案

小编典典

这是使用正则表达式的可能解决方案概述。错误检查留作练习。如果这不是家庭作业,并且您想查看充实的解决方案,请在此处查看

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
2021-01-20