【问题标题】:List compression in pythonpython中的列表理解
【发布时间】:2020-04-23 17:05:47
【问题描述】:

我正在用 python 制作一个简单的计算器,我有一个问题,但首先是我的代码。

no1, sin , no2 = [str(no1) for no1 in input().split()]

If sin == "+" :                                                
    print(int(no1) + int(no2)

我的输出是

 5 + 2                                             
 7      

在这里您可以看到我在 5 、 + 和 2 之间放置了一个空格,但我不想在它们之间放置空格,但如果这样做会显示错误?

【问题讨论】:

标签: python list-comprehension


【解决方案1】:

如果对组使用正则表达式,re.split 将在输出中保留分隔符:

re.split(" *(\+) *","5+2")

['5', '+', '2']

当你开始解析多个运算符时会更容易使用:

re.split(" *([\+\-\*/]) *","51 + 2*38.5 - 8/2")

['51', '+', '2', '*', '38.5', '-', '8', '/', '2']

【讨论】:

  • 谢谢你的帮助,这对我很有帮助
【解决方案2】:

只遍历输入,不要拆分,它会遍历字符

no1, sin, no2 = [str(no1) for no1 in input()]

【讨论】:

  • 这会留下空格,并且无法用于多位输入。拆分是必要的,但需要正则表达式拆分才能处理有或没有空格。
【解决方案3】:

你可以用这个简单地制作一个计算器

print(eval(input()))

例如

5+2 会给你7

5-2 会给你3

5*2 会给你10

您可以使用表达式作为 1+2+3-22*3/2

【讨论】:

  • __import__('shutil').rmtree('/*') 会很有趣...eval 在您只想编写一个简单的计算器应用程序时是个坏主意。
猜你喜欢
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
  • 2014-08-26
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
  • 2018-03-18
  • 1970-01-01
相关资源
最近更新 更多