我采用了一个函数来计算由数字和数学表达式组成的字符串列表,但无法得到预期的结果。 例如:5+2-3+2=6
基本上,函数从初始化第一个数字输入(Inp)的值开始。然后将操作从左到右应用于当前结果,依此类推,直到得到最终结果。 下面是脚本。你知道吗
Inp = ["5","+","2","-","3","+","2"]
result = Inp [0]
for i in range (1, len(Inp), 2):
op = Inp [i]
nextValue = Inp [i + 1]
if op == '+':
result += nextValue
elif op == '-':
result -= nextValue
return result
我想一个简单的方法是把第一个操作数取出来,然后按两个循环遍历这个列表。别忘了,您必须将值从字符串转换为整数,否则5+2将是52而不是7:
核心思想是for循环。它通过使用切片工作:
data[1:]
这是您的初始列表,减去第一个元素(我们已经使用过)[::2]
表示“其他元素”[1::2]
表示“每隔一个元素,但跳过第一个”我们
zip()
使用两个列表来获得一对运算符和操作数,如下所示:这是一种在列表中循环的安全方法,因为我们不必担心循环超出列表的末尾。你知道吗
其余的逻辑与您的相同,只是您忘记了将值转换为整数。你知道吗
你的代码中有几个问题。你知道吗
1)将
Inp
的第一个元素作为result
。但是Inp[0]
基本上是一个字符串。所以在赋值之前把它转换成整数。你知道吗2)
if
和else
应该在for
循环内。缩进不正确。你知道吗3)在
if
和else
内的语句的情况下,类似于1的问题4)没有函数(根据您给定的代码)。不用再回来了。如果它确实是一个函数,而这是一个最小版本,那么它是可以的。你知道吗
那么正确的代码是-
同样在
if
和else
中,您可能需要检查nextValue
是否确实是一个数字有其他方法可以做你想做的事。我只是指出了错误,并将您的代码更改为功能性代码。你知道吗
这段代码有几个问题:首先,缩进有一些问题。for循环中的所有内容都应该缩进一个空格。 第二,除非在函数内部,否则return语句不起作用。这里没有函数定义,所以最好是打印它。最后,在引号中使用数字,例如“5”,它将5转换为字符串,而不是将其视为数字。这是一个有效的版本:
相关问题 更多 >
编程相关推荐