- 课堂讨论参考答案区
- 帖子详情
老师参与
简单计算器
蒲江三哥
发表于2019年06月15日
<p><img src="https://nos.netease.com/edu-image/f1824b20f41340fca73d846c9f1631a3.jpg" /></p><p><code class="brush:python;toolbar:false" >n=input()[0:-1]
flag=0
if '/0' in n: #检查除数是否为零
flag=1
else: #检查是否有非法字符
for i in n:
if i not in '0123456789+-*/':
flag=1
break
if flag==1: #如果有非法字符或者除数为零,输出ERROR
print('ERROR')
else: #如果输入正常
count=[]
for j in range(len(n)):
if n[j] in '+-*/':
count.append(j) #将操作数的位置下标记在列表count中
if len(count)==1: #如果只有一个操作数,直接打印结果
print(int(eval(n)))
else: #如果有超过一个操作数,先将操作数与右边的数一起切割
ji=str(eval(n[0:count[1]]))#先将第一个操作数左右两边的结果计算出来
res=[]
for k in count[1:]:
if k != count[-1]:
res.append(n[k:count[count.index(k)+1]])#然后分别将之后的操作数与其右边的数一起切割,除了最后一个
else:
res.append(n[k:])#最后一个操作数与其右边的数
for t in res:
ji=str(eval(ji+t))
print(int(float(ji)))</code></p><p><img src="https://nos.netease.com/edu-image/14f3560c9d4945e39920c70a7a8c7c14.jpg" /></p><p>但是很奇怪,最简单的那种表达式却不能通过,应该是那种自由一个操作数的吧</p><p><br /></p><p>在这里请教各位为何?</p>
1
回复