python - 将分数输入 a/b / c/d 分配给 x = a/b, y = c/d sign= /。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
先感谢您。
解决方案
使用正则表达式来挑选各种数字和符号。如果预期输入的格式是固定的,那就更容易了,也就是说,我们期望分数和两边有空格或没有空格的运算符符号。
尝试这个:
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)
推荐阅读
- typescript - 作为映射键的字符串枚举不适用于 ReturnType
- php - PHP 我应该使用 Filesystem DB 来存储 JSON 文件吗
- django - 如何使用过滤器 django 查询计数?
- json - Json 数据未在 vuejs 中显示
- tibco - TIBCO BW 6.5 调试错误“限定符捆绑名称:Application_Name.module”,需要解决”
- julia - Julia 中是否有一个惰性和迭代的“地图”?
- sql - 在 BigQuery 上创建汇总表,连续聚合多个值
- angular - Angular6 自定义弹出窗口
- kubernetes - k8s - 具有服务依赖的部署
- php - How to get a word count of data in mysql and display in bar graph