如何在Python中的同一行上打印来自不同函数的两个语句

时间:2016-02-21 20:53:56

标签: python

我试图在Python 2.7(或3.4)中的同一行上打印两个输出语句。打印报表不会一个接一个地打印a / print b。我的程序需要329(比方说)并以单词形式返回该值--329。因此,它将确定300部分然后将其打印出29部分并打印出来。

if (main == hundreds[index]):
    print hundreds_words[index]
for location in range (0, 10):
    if (difference == twenties[location]):
        print twenties_words[location]

我想打印二十九个与三百个相同的行。我想我可以试着找到一个解决方案,但我想知道Python是否有一个程序来做到这一点。

4 个答案:

答案 0 :(得分:2)

是的,确实如此。您只需要告诉print不要在第一个之后添加新行。在python2中,您可以通过添加尾随逗号来完成此操作:print mystring,。在python3中,print是一个具有end关键字参数的函数:print(mystring, end="")

答案 1 :(得分:1)

简单的方法是重写数字到单词的功能,让它返回一个字符串而不是打印它。

更复杂的方法是重定向stdout以将print输出捕获为字符串。

编辑:看起来我让它变得比必要的更复杂;你可以试试

output_words = []
if (main == hundreds[index]):
    output_words.append(hundreds_words[index])
for location in range (0, 10):
    if (difference == twenties[location]):
        output_words.append(twenties_words[location])
return " ".join(output_words)

答案 2 :(得分:0)

在python 2中,您可以使用print结束,语句,以表示不会在换行符中终止,例如:

print hundreds_words[index], 

在python 3(或带有from __future__ import print_function的py2)中,您明确需要定义end,例如:

print(hundreds_words[index], end=' ')

但理想情况下,您只需在listjoin()结尾收集所有结果......

result = []
if (main == hundreds[index]):
    result.append(hundreds_words[index])
for location in range (0, 10):
    if (difference == twenties[location]):
        result.append(twenties_words[location])

print(' '.join(result))

答案 3 :(得分:0)

始终将功能设计为返回值,而不是打印它们(它更像是Pythonic!)。因此,您应该以这种方式修改代码:

# FOR PYTHON 2.x

if (main == hundreds[index]):
    print hundreds_words[index], # Note the comma
for location in range (0, 10):
    if (difference == twenties[location]):
        print twenties_words[location]

# FOR PYTHON 3.x

if (main == hundreds[index]):
    print(hundreds_words[index], end=" ") # end=" " will override the default '\n' and leave a space after the string
for location in range (0, 10):
    if (difference == twenties[location]):
        print(twenties_words[location])

还有第三种选择,更具可扩展性:包装列表中的所有数据,然后打印所有数据。

printable = []

if (main == hundreds[index]):
    printable += hundreds_words[index]
for location in range (0, 10):
    if (difference == twenties[location]):
        printable += twenties_words[location]

print(" ".join(printable))