Python整数和字符串使用

时间:2016-10-21 07:55:48

标签: python

for size in [1, 2, 3, 4]:
    result = 0
    print("size=" + str(size))
    for element in range(size):
        result = result + element
        print(" adding " + str(element)+", result so far=" + str(result))
    print("Done. size=" + str(size) + " result=" + str(result))
print("All done!")

我想知道为什么我们在第7行使用str()size上的result函数。我知道我们不能在单个打印函数中使用整数和字符串,但如果规则是这样的,为什么这个代码中没有任何问题(关于整数+字符串规则)?

x=18
print("Hello , I am" , x , "years old.")

我们在一行中使用整数和字符串不是吗?

3 个答案:

答案 0 :(得分:1)

关于订单的运行顺序:

"Done. size=" + str(size) + " result=" + str(result)
必须首先执行

之前调用print函数。 print函数只获取单个连接字符串 - 它不知道使用+来构造它。

在这种情况下:

print("Hello , I am" , x , "years old.")

print函数获取所有4个参数(实际上是一个4元素元组),并且现在可以将每个参数转换为字符串本身(请参阅下面的不必要的详细信息)。

顺便说一下,如果你反对使用str(),那么还有其他方法可以格式化要打印的字符串。以下行都产生相同的输出:

print("Done. size=" + str(size) + " result=" + str(result))
print("Done. size=%d result=%d" % (size, result))
print("Done. size={} result={}".format(size, result))
print(f"Done. size={size:} result={result:}")

最后一个f" "需要Python 3.6或更高版本。

不必要的细节:

str()函数中print()的转换实际上是由python API调用PyFile_WriteObject()使用标记Py_PRINT_RAW完成的(在C实现中)。如果给出Py_PRINT_RAW,则写入对象的str()。

答案 1 :(得分:1)

仅仅因为两个引用一起出现在一行中并不意味着它们被连接在一起。如果是第一个例子,你是串联字符串(这就是为什么它们都必须是字符串)并将它们发送到print函数。在第二个示例中,您将向print函数发送多个参数,这些参数将打印每个参数。 print函数可以处理任意数量的参数,这些参数不一定必须属于同一类型。

答案 2 :(得分:0)

加号(+)运算符无法添加字符串和数字。这就是您需要使用str()

的原因

如果您尝试:

"hello" + 2

你会收到错误:

Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects

使用print(a, "b", c, d)时,您传递的是多个参数,并且不需要连接。每个参数在打印前都会转换为字符串。