1

我有以下代码

Test1 =  Price[Product.index(TestABC)]+   AddQTYPriceA

print Test1
print "try this test" + Test1

当它需要打印测试 1 时,它会给出正确的答案。我想尝试在它的前面添加文本,所以我输入了 print "try this test" + Test1

对于第二个打印命令,它给出以下错误。

Traceback (most recent call last):
  File "C:\Python26\data.py", line 78, in <module>
    print "try this test" + Test1
TypeError: cannot concatenate 'str' and 'float' objects

有人可以帮助我如何让文字出现在前面。

格雷吉 D

4

5 回答 5

6

为了连接字符串和浮点数,您需要使用str()函数将浮点数转换为字符串。

print "try this test " + str(Test1)

或者你可以使用.format()字符串方法:

print "try this test {0}".format(Test1)

这两种方法都记录在 python字符串内置类型 page中。

于 2012-05-11T13:39:28.957 回答
3

试试这个 :

print "try this test", Test1

# let's assume that Test1 is equal to 2.5, you will get : 
>>> try this test 2.5

无需连接字符串,让 python 完成工作;)

编辑:正如 Lattyware 所提到的,python 将自动在结果字符串的两个部分之间添加一个空格。

于 2012-05-11T13:40:13.327 回答
1

好吧,我的手腕因使用传统方法而被打耳光。

使用string.format方法,因为它非常灵活:

print "try this test {0}".format(Test1)

str.format() 接受任意数量的参数,并按顺序映射到字符串中给定的 {slot}。所以你可以这样做:

"{0} {1} {2}".format("test", 1, 0.01) # => "test 1 0.01"

又好又简单!

因此,只有在没有人查看时才执行以下操作:

print "try this test %f" % (Test1)
于 2012-05-11T13:41:06.700 回答
0

你可以试试这个例子:

print "try this test %s" % str(Test1)

它允许您将文本放在与 Test1 相关的开头或其他位置。

于 2012-05-11T13:41:32.147 回答
0

您必须将 Test1 的输出转换为相同的数据 - print 可以处理任何数据类型,但+运算符只能处理相同的类型。

选项是:

  • 使用 Test1 将任何输出转换为字符串str()

  • 定义一种方法来处理将 Test1 添加到其他事物以返回字符串。

  • 使其成为 Test1 类实际上生成整个字符串输出,因此无需连接它,您可以实现__str__()方法

  • 使用许多选项来格式化输出

但我相信要带回家的要点是,+在 python 中并没有像在其他语言中那样重载,并且需要显式地转换不同的类型。

示例需要添加到您的 Price 类才能使用未修改的打印代码:

class Price(object):
    def __add__(self, x):
        return '%s %s' % (self, x)
于 2012-05-11T13:42:14.757 回答