如何在Python中识别分数算术表达式的运算符并正确拆分(含区分分数分隔符/与除法运算符/)
解决方案:用正则表达式精准拆分分数运算式
这问题的核心难点确实是区分分数内部的/和作为除法运算符的/,最靠谱的解决思路是用正则表达式直接匹配完整的分数结构和运算符,从根源上避开两种/的混淆。
实现代码
import re # 获取用户输入 askfraction = input("Enter a fraction arithmetic operation: ") # 定义正则模式:精准匹配「分数 运算符 分数」的完整结构 pattern = r'^(\d+/\d+)\s*([+\-*/])\s*(\d+/\d+)$' match_result = re.match(pattern, askfraction) if match_result: # 从匹配结果中提取对应内容 x = match_result.group(1) sign = match_result.group(2) y = match_result.group(3) print(f"x: {x}, sign: {sign}, y: {y}") else: # 格式错误时给出提示 print("输入格式有误,请输入类似'3/4 + 1/2'的分数运算式(支持+、-、*、/四种运算符)")
代码细节解释
- 正则模式
r'^(\d+/\d+)\s*([+\-*/])\s*(\d+/\d+)$'的作用:^和$:确保匹配整个输入字符串,避免出现部分匹配的无效情况(\d+/\d+):专门捕获数字/数字的完整分数结构,彻底区分开分数内部的/\s*:匹配0个或多个空格,兼容输入带空格(如3/4 + 1/2)或不带空格(如3/4+1/2)的情况([+\-*/]):捕获四则运算符,把-放在中间是为了避免被正则解析为字符范围定义
- 匹配成功时直接提取分组内容,失败时给出友好提示,兼顾了功能和用户体验
测试用例验证
- 输入
3/4 + 1/2→ 输出x: 3/4, sign: +, y: 1/2 - 输入
3/4 - 1/2→ 输出x: 3/4, sign: -, y: 1/2 - 输入
3/4 * 1/2→ 输出x: 3/4, sign: *, y: 1/2 - 输入
3/4 / 1/2→ 输出x: 3/4, sign: /, y: 1/2
内容的提问来源于stack exchange,提问作者user15033700
相关产品推荐
相关产品推荐

