将分数输入a/b/c/d赋值给x=a/b,y=c/d符号=/。python

2024-10-01 04:50:49 发布

您现在位置:Python中文网/ 问答频道 /正文

如何让程序检查符号是否为/、*、-、+并将其拆分。 当符号为/时,问题也会出现。如何告诉程序只分割中间的部分而不是实际的分数?

askfraction = input("Enter a fraction arithmetic operation: ")
askfraction = askfraction.replace(" ", "")
temp = askfraction.split("+")
listToStr = ' '.join(map(str, temp)) 
temp1 = listToStr.split("/")
listToStr2 = ' '.join(map(str, temp1))
temp2 = listToStr2.split(' ')
a,b,c,d = temp2
sign = "+"
x = a+"/"+b
y = c+"/"+d
print("x: "+ x +"sign: " + sign + "y: "+y)

测试输入:

3/4 + 1/2

测试输出:

x: 3/4, sign: +, y: 1/2

我希望这个程序能够检测到任何符号,比如+,/,*,-并相应地分割。我只是不知道程序怎么能从运算符符号中知道分数。 预期投入:

3/4 / 1/2

预期产出:

x: 3/4, sign: /, y: 1/2

先谢谢你


Tags: 程序mapinput符号temp分数splitjoin
1条回答
网友
1楼 · 发布于 2024-10-01 04:50:49

使用正则表达式选择各种数字和符号。如果期望输入的格式是固定的,那么就更容易了,也就是说,我们期望分数和运算符符号的两边都有空格或没有空格

试试这个:

import re

REGEX_FRACTION = r'(\d+)\/(\d+) ?([+-/\*]) ?(\d+)\/(\d+)'

test_input = '3/4 + 1/2'

matchObj = re.match(REGEX_FRACTION, test_input)
if matchObj:
    fraction_1_numerator = int(matchObj.group(1))
    fraction_1_denominator = int(matchObj.group(2))
    sign = matchObj.group(3)
    fraction_2_numerator = int(matchObj.group(4))
    fraction_2_denominator = int(matchObj.group(5))

    print("fraction 1: %d/%d, sign: %s, fraction 2: %d/%d"%(fraction_1_numerator, fraction_1_denominator, sign, fraction_2_numerator, fraction_2_denominator))

    #calculate
    fraction_1 = fraction_1_numerator/fraction_1_denominator
    fraction_2 = fraction_2_numerator/fraction_2_denominator

    if sign == '+':
        print(fraction_1+fraction_2)
    elif sign == '-':
        print(fraction_1-fraction_2)
    elif sign == '*':
        print(fraction_1*fraction_2)
    elif sign == '/':
        print(fraction_1/fraction_2)

相关问题 更多 >