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

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

本文介绍在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 相关产品和应用

全部下载

专题列表