解题思路:
利用正则表达式解题。
正则表达式 r'^(\d+)\s*([+\-*/%])\s*(\d+)$'
这是一个原始字符串(r'' 防止转义冲突)。
表达式分为三部分,匹配 数字 运算符 数字 的格式:
^:匹配字符串开头。
(\d+):匹配第一个数字(\d 表示数字,+ 表示至少一个)。
\s*:匹配零个或多个空格(\s 是空白字符,* 表示任意数量)。
([+\-*/%]):匹配运算符(+, -, *, /, %),注意 - 被转义为 \-)。
\s*:同上,匹配空格。
(\d+):匹配第二个数字。
$:匹配字符串结尾。
注意事项:
参考代码:
import re
def simple_arithmetic():
expr = input().strip()
# 正则表达式匹配:两个数字中间有运算符
match = re.match(r'^(\d+)\s*([+\-*/%])\s*(\d+)$', expr)
if not match:
return "Invalid input format. Expected: 'a op b'"
a_str, op, b_str = match.groups()
try:
a = int(a_str)
b = int(b_str)
except ValueError:
return "Operands must be integers."
if not (1 <= a <= 99 and 1 <= b <= 99):
return "Operands must be two-digit positive integers."
try:
if op == '+':
result = a + b
elif op == '-':
result = a - b
elif op == '*':
result = a * b
elif op == '/':
if b == 0:
return "Division by zero is not allowed."
result = a // b
elif op == '%':
if b == 0:
return "Modulo by zero is not allowed."
result = a % b
except Exception as e:
return f"An error occurred: {e}"
return result
if __name__ == "__main__":
print(simple_arithmetic())
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复