Python实现输入数字连续加减运算:eval方法与手动解析对比

不晚
不晚
发布时间:2026-10-13| 6人浏览过
原创

本文介绍在Python中实现输入数字连续加减运算的两种方法。首先展示利用eval函数直接计算字符串表达式的简洁方案,随后详细解析不使用库函数的手动实现逻辑。重点分析了手动解析中常见的字符串越界错误及其成因,包括索引范围判断和循环执行顺序问题,并提供了修正后的完整代码供参考。

如果不依赖内置库,手动编写连续加减运算逻辑耗时较长且容易出错。经查阅资料发现,可以直接对输入字符串调用eval(str)函数,从而直接获取计算结果。

使用eval函数的具体程序如下:

s=input("请输入要运算的数字")
print("The result is{}".format(eval(s)))

以下代码展示了不使用eval函数实现加减运算的逻辑。核心思路是通过一个标志位flag来判断当前是否需要进行加减操作,其余部分逻辑较为直观。

s=input("请输入要运算的数字")
l=len(s)
h=0
i=0
flag=1
a=0
for i in range(0,l):
 if s[i]=='+' or s[i]=='-':
  flag=1
  c=s[i]
 else:
  flag=0
  a=a*10+round(int(s[i]))
 if flag==1 and s[i]=='+':
  h+=a
  a=0
 elif flag==1 and s[i]=='-':
  h-=a
  a=0
print(h)

此处附上之前一直出错的代码版本,旨在积累经验,提醒自己在后续开发中需更加细心:

s=input("请输入要运算的数字")
l=len(s)
h=0
i=0
while i<=l:
 a=0
 c=s[i]
 i+=1
 while s[i]!='+' and s[i]!='-' and i<=l :
  a=a*10+round(int(s[i]))
  i+=1
 if c=='+':
  h+=a
 else:
  h-=a
print(h)
#错误类型:IndexError: string index out of range(字符串越界) 

关于代码中出现越界错误的原因,主要有两点说明:

① 字符串可访问的最大索引值为len(str)-1(注:上图中错误代码直接使用了len(str)作为上限)

② Python解释器逐行执行代码,因此条件判断i<=l-1必须置于访问s[i] != '+'之前,以避免索引越界。

以下是修改后能够正常运行并输出正确结果的代码:

s=input("请输入要运算的数字")
l=len(s)-1
h=0
i=0
while i<=l:
 a=0
 c=s[i]
 i+=1
 while i<=l and s[i]!='+' and s[i]!='-' :
  a=a*10+round(int(s[i]))
  i+=1
 if c=='+':
  h+=a
 else:
  h-=a
print(h)

以上关于Python实现输入数字连续加减运算的方法就是本文分享的全部内容,希望能对大家有所帮助,也希望大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。