python - 如何使用字符串用户输入对 3 个数字进行减法、除法或求幂
问题描述
好的,所以基本上我在高中的第一个计算机科学课上有一个作业,我能够弄清楚如何完成大部分作业。我们应该制作一个计算器,它可以使用 PEMDAS 运算符执行基本功能,并进行跨不同运算符的计算。我能够把它的大部分记下来,但我不知道如何让除法、减法或求幂来处理超过 2 个数字。请帮忙,谢谢!
分配说明:
在下面的练习中,您将创建一个程序,该程序使用递归来求解任何基本方程(加法、减法、乘法、除法和指数)。以下是您的程序的框架。
equation = input("Please enter an equation: ")
def solveIt(e):
# loop through e
# if you find a plus sign
# return recursive call @param part of e before the plus sign +
# recursive call @param part of e after the plus sign
return e
print(solveIt(equation))
不要更改任何现有代码。提供的说明将帮助您获取代码以通过加法求解方程。使用复合方程(如 343 + 87 + 5)测试您的代码,并在继续下一步之前验证结果是否正确。
现在这是我可以用来做 8/2,但我不能做 8/2/2 的代码:
expression = input("Please enter an equation: ")
equation = expression.replace(' ', '')
res=0
total=0
def solveIt(e):
global res, total
for i in range(len(e)):
if e[i]=="/":
e1 = e[:i]
e2 = e[i+1:]
total=total+solveIt(e1) / solveIt(e2)
return total
return int(e)
(solveIt(equation))
print("total:",total)
谢谢您的帮助!
解决方案
对于用于评估数值表达式的一般方法,您将遇到各种问题。您将在运算符优先级、术语的正确分组和正确的评估顺序方面遇到问题。
话虽如此,为一系列除法中的一种情况修复代码的方法是在另一个方向上处理输入表达式。也就是说,从表达式末尾开始查找每个“/”并返回到开头。这只是对代码的一个小改动,它会导致表达式12/3/2
正确评估:
expression = input("Please enter an equation: ")
equation = expression.replace(' ', '')
res=0
total=0
def solveIt(e):
global res, total
for i in range(len(e)-1, -1, -1):
if e[i]=="/":
e1 = e[:i]
e2 = e[i+1:]
total=total+solveIt(e1) / solveIt(e2)
return total
return int(e)
(solveIt(equation))
print("total:",total)
样本输入:
10000/10/10/5/4
结果输出:
total: 5.0
推荐阅读
- javascript - 计时器和本地存储问题
- r - 从 R 中整个数据帧的行中查找配对值
- javascript - 使用 casperjs 连接到 whatsappweb
- django - DJANGO,DRF:request id 返回 NONE 值而不是用户对象
- css - 为什么 CSS 混合模式会被 jquery 插件 fullPage.js 覆盖?
- android - 重置分数 - 它不会回到零
- python - 删除矩阵中最后一个字符后的空格
- php - 如何在 Laravel 5.4 中格式化电子邮件中收到的内容?
- php - 向外部 php 发送变量的最佳方法
- css - CSS计数器不递增