在Python中,如何在打印函数内显示方程的值?

时间:2012-10-05 17:20:27

标签: python

这是我的代码,在Python中:

x=float(raw_input('How many total orders have accumulated: '))
y=float(raw_input('How many units are in the inventory: '))
z=float(raw_input('How many accumulated orders have you placed: '))
print 'order (x/25)+(y/10)+(z/25) units'

我知道单行代码很长,但我希望它按顺序执行,就像程序一样。不必一步一步地输入代码以执行下一步。我写这篇文章是为了给同事复制和粘贴,并且能够运行方程数百次,而不是每次都写出等式。

请注意,代码的第一部分工作正常,问题仅在于代码的最后部分。该行末尾的print命令是:

print 'order (x/25)+(y/10)+(z/25) units'

如何正确设置语法,以便显示该等式的值,而不仅仅显示等式本身?

我对编程很陌生,只是将其用作加快其他工作的工具。我不熟悉术语,所以我很难找到这个问题的信息。我搜索谷歌和堆栈交换,但找不到任何东西。

3 个答案:

答案 0 :(得分:4)

使用comma(,)分隔各种元素,将它们连接起来。在评估任何表达式后...

因此,您的表达式将被评估,然后使用comma(,)将获得的值与之前和之后的字符串连接起来。

**编辑: - 实际上,你不需要那些括号..

print 'order:', x/25 + y/10 + z/25 ,' units'

答案 1 :(得分:3)

@ Rohit回答的替代方法是使用string formatting

print 'order %s units' % (x / 25 + y / 10 + z / 25)

或使用较新的str.format()方法:

print 'order {0} units'.format(x / 25 + y / 10 + z / 25)

修改:在此处包含我对整数除法的评论,以提高可读性。

根据您的Python版本,使用/分割两个整数可能无法达到预期效果。

在3.x之前的Python版本中,除以两个整数的结果也总是一个整数(向下舍入,称为“底层划分”)。

Python 2.7.2 (default, Oct 30 2011, 13:00:18)
>>> 5 / 2
2

所以5 / 2 == 2。如果你想做“真正的除法”,你需要首先将其中一个参数转换为浮点数:

Python 2.7.2 (default, Oct 30 2011, 13:00:18) 
>>> 5 / 2.0
2.5
>>> 5 / 2.0 == 2.5
True

使用Python 3.0,/运算符的行为发生了变化:

Python 3.2.2 (default, Apr 15 2012, 16:59:18) 
>>> 5 / 2
2.5

转换为浮点数可以使用float(i)

有关from __future__ import division的所有详情,原因和解读,请参阅PEP238this article

答案 2 :(得分:0)

我看到您使用的是 Python 2,因为 Python 3 要求打印语句使用方括号,例如 print()

我强烈建议您继续使用 Python 3,因为它是最新版本并且 Python 2 不再更新。至少在撰写本文时,Python 的最新版本是 Python 3.9.2。

就像@Lukas Graf 所说的,您可以使用字符串格式。 Python 3.8 及更高版本的好处是 f-strings。它类似于 str.format(),但更好。

print(f'order {(x / 25) + (y / 10) + (z / 250)} units')

希望这会有所帮助。 (我知道,我晚了9年)