python关于四则运算的代码该如何去处理三位数或多位数?

name=input('请输入表达式')
shu=[]
fu=[]
expre=''
for x in name:
if x==' ':
continue
elif x!=' ':
expre=expre+x

for x in expre:
if x=='+':
fu.append(x)
elif x=='*':
fu.append(x)
elif x=='-':
fu.append(x)
elif x=='/':
fu.append(x)
else:
x=int(x)
shu.append(x);

print(shu)

for x in range(len(fu)):
if fu[x]=='*':
shu[x+1]=shu[x]*shu[x+1]
shu[x]=0
elif fu[x]=='/':
shu[x + 1] = shu[x] * shu[x + 1]
shu[x] = 0
elif fu[x]=='-':
shu[x+1]=-shu[x+1]
else:
continue
s=int(0)
for x in range(len(shu)):
s=s+shu[x]

print(shu)
print(s)

上面是我写的源代码,该怎么去处理多位数的数字啊?想了好多方法都没弄出来(刚学没多久)

name = input("请输入表达式:")
expre = ""

for x in name:
    if x == ' ':
        continue
    elif x!= ' ':
        expre += x

print(eval(expre))

你想实现的是将一个字符串的表达式计算出结果?比如 “11 +    12*3”。直接用eval函数就好

追问

不用其他函数模块,没办法新手那里懂这么多嘛,这是个作业,规定好了,能不能提供个思路?谢谢啦

追答

1、把输入的字符串转换成数值字符形式,比如 “11 + 12* 3”你需要转换成
data = 【11, 12, 3】 、op=【'+', '*'】
2、你需要堆栈和算符优先文法来匹配优先级,比如上个式子中,12*3是需要优先计算的。大致过程为,扫描的数字11-->查看优先级-->11入数据栈-->查看优先级-->‘+’如符号栈-->查看优先级-->12如数据栈--->优先级-->*入栈-->优先级-->3入栈--->之后*优先级最高,出栈---->出栈2个数字 3 和 12 运算-->查优先级--->抛出‘+’--->运算。
3、如果你要的是对字符串表达式的解析大致是这个样子。请参考【编译原理】。如果紧实现功能,请用函数。

温馨提示:内容为网友见解,仅供参考
无其他回答

用Scratch做计算器程序,以支持多位数的任意四则运算(加减乘除)?
将计算结果设为a scratch的模块体有很多类,请告知具体情况。以下是几种其他语言的基本方法,复杂但简单。python:a = int(input())b = int(input())print(a+b)C++\/C:include <iostream> using namespace std;int main(){ int a,b;cin>>a>>b;cout>>a+b;总之大致意思就是输入两个加数,...

python中如何对矩阵进行加减乘除?
该操作步骤如下:1、提取元素:如果一个矩阵是一个由多个元素组成的二维数组,可以通过指定行和列的索引来提取其中的一个元素。例如,如果有一个3x3的矩阵,可以通过索引来提取第1行第2列的元素。在大多数编程语言中,矩阵的索引从0开始,因此第1行第2列的元素的索引是(0,1)。2、对矩阵中的每个...

Python语言基础(python语言基础与应用网课答案)
Python支持三元表达式,但是语法和C++不同,使用ifelse结构,写成: 上段代码等价于: Python中用[]表示空的list,我们也可以直接在其中填充元素进行初始化: 使用append和pop可以在list的末尾插入或者删除元素: list可以通过[]加上下标访问指定位置的元素,如果是负数,则表示倒序访问。-1表示最后一个元素,-2表示倒数第二个...

python中的两个二维数组,如何让这两个二维数组在不使用循环的情况下对...
>>> c [[-4, -5, 0, 5], [-3, -1, 1, 5], [-9, -27, -47, -98]]

如何突破两位数乘两位数的重难点
例1、例2的教学重点是探索并掌握三位数乘两位数笔算乘法的算理和方法,并能将三位数乘两位数的一般方法迁移到多位数乘法运算中去;教学难点是理解三位数乘两位数的笔算算理。2.注意书本知识与生活常识的结合。使学生理解常见的数量关系,即刻画单价、数量、总价三者关系的模型:单价×数量=总价。速度、时间和路程三者...

Python语言基础(python语言基础与应用网课答案)
Python中用#表示单行注释,#之后的同行的内容都会被注释掉。 使用三个连续的双引号表示多行注释,两个多行注释标识之间内容会被视作是注释。 Python当中的数字定义和其他语言一样: 我们分别使用+,-,*,\/表示加减乘除四则运算符。 这里要注意的是,在Python2当中,10\/3这个操作会得到3,而不是3.33333。因为除数和被...

相似回答