Python:“打印”和“输入”在一行中

时间:2015-05-09 16:01:17

标签: python input printing line

如果我想在python中的文本之间添加一些输入,我怎么能在没有用户输入内容并按下回车后切换到新行?

E.g:

print "I have"
h = input()
print "apples and"
h1 = input()
print "pears."

应修改为输出到控制台的一行说:

I have h apples and h1 pears.

它应该在一条线上的事实没有更深层的目的,它是假设的,我希望它看起来那样。

3 个答案:

答案 0 :(得分:5)

您可以执行以下操作:

print 'I have %s apples and %s pears.'%(input(),input())

基本上你有一个用两个输入共振的字符串。

修改

据我所知,要使用两个输入在一行上获取所有内容都不容易实现。你能得到的最接近的是:

print 'I have',
a=input()
print 'apples and',
p=input()
print 'pears.'

将输出:

I have 23
apples and 42
pears.

逗号表示法会阻止print语句之后的新行,但输入后的返回仍然存在。

答案 1 :(得分:3)

虽然另一个答案是正确的,但不推荐使用.format(),而应使用字符串print "I have {0} apples and {1} pears".format(raw_input(), raw_input()) 方法。以下是您可以做的事情。

print("I have {0} apples and {1} pears".format(input(), input()))

此外,根据您的问题,您不清楚自己是否正在使用,因此此处还有个答案

configure_file ( src/luaconf.h.in ${CMAKE_CURRENT_BINARY_DIR}/luaconf.h )

答案 2 :(得分:0)

如果我理解正确的话,你要做的就是在没有回应换行符的情况下获得输入。如果您使用的是Windows,则可以使用msvcrt模块的getwch方法获取输入的单个字符而不打印任何内容(包括换行符),然后打印字符(如果它不是换行符)。否则,您需要定义一个getch函数:

import sys
try:
    from msvcrt import getwch as getch
except ImportError:
    def getch():
        """Stolen from http://code.activestate.com/recipes/134892/"""
        import tty, termios
        fd = sys.stdin.fileno()
        old_settings = termios.tcgetattr(fd)
        try:
            tty.setraw(sys.stdin.fileno())
            ch = sys.stdin.read(1)
        finally:
            termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
        return ch


def input_():
    """Print and return input without echoing newline."""
    response = ""
    while True:
        c = getch()
        if c == "\b" and len(response) > 0:
            # Backspaces don't delete already printed text with getch()
            # "\b" is returned by getch() when Backspace key is pressed
            response = response[:-1]
            sys.stdout.write("\b \b")
        elif c not in ["\r", "\b"]:
            # Likewise "\r" is returned by the Enter key
            response += c
            sys.stdout.write(c)
        elif c == "\r":
            break
        sys.stdout.flush()
    return response


def print_(*args, sep=" ", end="\n"):
    """Print stuff on the same line."""
    for arg in args:
        if arg == inp:
            input_()
        else:
            sys.stdout.write(arg)
        sys.stdout.write(sep)
        sys.stdout.flush()
    sys.stdout.write(end)
    sys.stdout.flush()


inp = None  # Sentinel to check for whether arg is a string or a request for input
print_("I have", inp, "apples and", inp, "pears.")