Python 数学从左到右

Python 数学从左到右,python,Python,所以对于作业,我需要让python从左到右进行数学运算 从这里读到, 它说“还要记住数学是从左到右计算的,除非放在括号里,最里面的括号是先计算的。” 但有没有办法强迫python从左到右进行数学运算,而不使用括号,并且忽略运算顺序 我的代码只是一个变量,在用户输入数学方程后打印出来 x = input("Enter numbers and operators: ") print x 我需要它能做的,比如, 4+5*5=45 而不是python中的4+5*5=29 谢谢你的帮助 编辑1 use

所以对于作业,我需要让python从左到右进行数学运算

从这里读到,

它说“还要记住数学是从左到右计算的,除非放在括号里,最里面的括号是先计算的。”

但有没有办法强迫python从左到右进行数学运算,而不使用括号,并且忽略运算顺序

我的代码只是一个变量,在用户输入数学方程后打印出来

x = input("Enter numbers and operators: ")
print x
我需要它能做的,比如, 4+5*5=45

而不是python中的4+5*5=29

谢谢你的帮助

编辑1

userinput = raw_input("Enter numbers and operators: ")
parts = userinput.split()
print parts
print eval(parts)

我输入1+1并将其打印出来,结果是['1','+','1']No。任务的重点可能是您实际上必须自己编写一些代码,而不是让python为您做所有事情,并且您必须学习如何使用列表和循环。:-)以下是一种可能的方法:

  • 使用
    input()
    获取用户要计算的表达式。您将得到一个字符串,即单个字符的一个序列
  • 将字符串拆分为较小字符串的列表,每个字符串都是数字或运算符。所以
    “42+8*9”
    应该变成
    “42”、“+”、“8”、“*”、“9”
    。(假设运算符和数字之间有空格,则有一个名为
    split()
    的内置函数可以执行此操作。)
  • 创建一个变量,例如,
    result
    ,该变量将保留到目前为止的结果,并将第一个数字放入其中。请注意,包含数字的字符串与数字不同,但可以使用
    int()
    将此类字符串转换为数字
  • 使用
    for
    循环查看列表的其余元素。每次您找到一个作为运算符的元素时,请对
    result
    和列表中的后续编号使用该操作

  • 试着沿着这些思路来解决问题,如果您遇到问题,请告诉我们。

    不。任务的重点可能是您实际上必须自己编写一些代码,而不是让python为您做所有事情,并且您必须学习如何使用列表和循环。:-)以下是一种可能的方法:

  • 使用
    input()
    获取用户要计算的表达式。您将得到一个字符串,即单个字符的一个序列
  • 将字符串拆分为较小字符串的列表,每个字符串都是数字或运算符。所以
    “42+8*9”
    应该变成
    “42”、“+”、“8”、“*”、“9”
    。(假设运算符和数字之间有空格,则有一个名为
    split()
    的内置函数可以执行此操作。)
  • 创建一个变量,例如,
    result
    ,该变量将保留到目前为止的结果,并将第一个数字放入其中。请注意,包含数字的字符串与数字不同,但可以使用
    int()
    将此类字符串转换为数字
  • 使用
    for
    循环查看列表的其余元素。每次您找到一个作为运算符的元素时,请对
    result
    和列表中的后续编号使用该操作

  • 试着沿着这些思路来解决这个问题,如果你被卡住了,请告诉我们。

    我认为他应该使用
    raw\u input()
    ,否则Python会在有机会更改运算符优先级规则之前对输入进行评估:)@TimPietzcker
    raw\u input
    在3.x中拼写为
    input
    ,所以我只有x=raw\u input(“输入数字和运算符:”)y=x.split()我不知道你会怎么做第三步。有没有一种方法可以不用for?比如使用while@glors:当然;
    while
    也可以。您可能希望从一个更简单的任务开始,以适应以这种方式使用运算符和数字。假设您将只使用一个运算符,例如
    42*9
    。尝试打印
    x.split()的结果
    ;它看起来像什么?你能以某种方式获得这两个数字吗?如果你尝试将这两个数字相加会发生什么情况?你能用
    if
    检查它是什么类型的运算符吗?稍微玩弄一下,并用你发现的内容更新问题。@glors:顺便说一句,你应该使用更具描述性的名称,例如
    ex按
    而不是
    x
    ,按expressionParts而不是
    y
    。我认为他应该使用
    raw\u input()
    ,否则Python将在有机会更改运算符优先级规则之前对输入进行求值:)@TimPietzcker
    raw_input
    在3.x中拼写为
    input
    ,所以我只需要x=raw_input(“输入数字和运算符:”)y=x.split(),我不知道如何执行步骤3。有没有一种方法可以在不使用for的情况下完成?喜欢用while@glors:当然可以
    while
    也会起作用。您可能希望从一个更简单的任务版本开始,以适应以这种方式使用运算符和数字。假设您将只获得一个运算符,例如
    42*9
    。尝试打印
    x.split()
    的结果;它看起来像什么?你能设法得到这两个数字吗?如果您尝试将这两个数字相加,会发生什么情况?您能否使用
    if
    检查它是哪种操作员?稍微玩玩一下,用你发现的内容更新问题。@glors:顺便说一下,你应该使用更多的描述性名称,例如
    expression
    而不是
    x
    ,以及
    expressionParts
    而不是
    y