python实现输入数字的连续加减方法

yipeiwu_com5年前Python基础

不用库,写了很久,一直出bug,到网上一搜,可以直接输入之后,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 (ps上图直接是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设计】。

相关文章

解决pandas .to_excel不覆盖已有sheet的问题

直接to_excel会被覆盖,借助ExcelWriter可以实现写多个sheet。 from openpyxl import load_workbook excelWriter =...

如何用python写一个简单的词法分析器

如何用python写一个简单的词法分析器

编译原理老师要求写一个java的词法分析器,想了想决定用python写一个。 目标 能识别出变量,数字,运算符,界符和关键字,用excel表打印出来。 有了目标,想想要怎么实现词法分析器...

Flask框架学习笔记之消息提示与异常处理操作详解

Flask框架学习笔记之消息提示与异常处理操作详解

本文实例讲述了Flask框架学习笔记之消息提示与异常处理操作。分享给大家供大家参考,具体如下: flask通过flash方法来显示提示消息: from flask import Fl...

Python实现程序判断季节的代码示例

Python实现程序判断季节的代码示例

1.用户输入月份,判断这个月是哪个季节 month = int(input('Month:')) if month in [3,4,5]: print('春季') elif mo...

python 随机数生成的代码的详细分析

以下的文章主要是以介绍python随机数生成的代码来介绍Python随机数生成在实际操作过程中的具体应用,如果你对其的相关内容感兴趣的话,你就可以点击以下的文章。希望你会对它有所收获。...