Python 尝试在一行上打印多行字符串(字符串存储为变量)

Python 尝试在一行上打印多行字符串(字符串存储为变量),python,string-formatting,multiline,Python,String Formatting,Multiline,我正在学习麻省理工学院的计算和编程入门课程,我正在尝试将一个多行字符串存储在一个变量中,我可以使用这个变量让程序与用户交互 我知道“用于输入带有回车符的长代码行并插入换行符(我想我的措辞有点准确) 我遇到的是存储的字符串在我的代码中看起来很糟糕,使用三重引号看起来更干净,但我仍然希望它打印在一行上。我正在尝试将它存储在一个变量中,如下所示: inputRequest = """ Enter 'h' to indicate the guess is too high. Enter 'l' to i

我正在学习麻省理工学院的计算和编程入门课程,我正在尝试将一个多行字符串存储在一个变量中,我可以使用这个变量让程序与用户交互

我知道
用于输入带有回车符的长代码行并插入换行符(我想我的措辞有点准确)

我遇到的是存储的字符串在我的代码中看起来很糟糕,使用三重引号看起来更干净,但我仍然希望它打印在一行上。我正在尝试将它存储在一个变量中,如下所示:

inputRequest = """
Enter 'h' to indicate the guess is too high.
Enter 'l' to indicate the guess is too low.
Enter 'c' to indicate the guess is correct.
"""
我试着在控制台中这样调用该变量:

print(inputRequest, end=" ")

但它仍然打印在三行上。有没有一种有效的方法可以让我的代码看起来不那么凌乱?当我需要调用特定的输出以供用户交互时,将字符串存储在变量中似乎是一种减少键入的好方法,但我确信有更好的方法可以做到这一点。谢谢!

您可以n在每行末尾加上反斜杠,以防止在字符串中打印换行符

inputRequest = """\
    Enter 'h' to indicate the guess is too high. \
    Enter 'l' to indicate the guess is too low. \
    Enter 'c' to indicate the guess is correct. \
    """

print(inputRequest)
如果需要,也可以使用单独的字符串来实现相同的目的

inputRequest = \
    "Enter 'h' to indicate the guess is too high. " \
    "Enter 'l' to indicate the guess is too low. " \
    "Enter 'c' to indicate the guess is correct. " \

print(inputRequest)

您的问题是字符串包含固有的下线字符。
print
语句没有添加任何新行,但它们已经嵌入到您告诉它要打印的内容中。您需要替换这些字符,例如:

print(inputRequest.replace("\n", "  ")
结果:

Enter 'h' to indicate the guess is too high.  Enter 'l' to indicate the guess is too low.  Enter 'c' to indicate the guess is correct.

以下代码将帮助您实现您正在尝试执行的操作:

print("Enter 'h' to indicate the guess is too high.",
"Enter 'l' to indicate the guess is too low.",
"Enter 'c' to indicate the guess is correct.")
或者,您也可以交替使用引号。以下代码的第一行说明了这一点:

print('Enter "h" to indicate the guess is too high.',
  "Enter 'l' to indicate the guess is too low.",
  "Enter 'c' to indicate the guess is correct.")
希望这正是您试图实现的目标,并且对您有所帮助;)
干杯!

这里到处都是答案。这是一个有用的实验。在IDE中键入以下行:

text = "This is string1. This is string2. This is string3"
现在,通过在每个标点符号后按enter键手动格式化字符串,您将获得:

text = "This is string1." \
       "This is string2." \
       "This is string3."

以上是字符串连接,将以“干净”的方式提供您想要的内容。接受的答案并不完全是“干净”的,但因为是:“争论语义”XD

您可以在多行上创建一个单行字符串:

inputRequest = ("Enter 'h' to indicate the guess is too high. "
                "Enter 'l' to indicate the guess is too low. "
                "Enter 'c' to indicate the guess is correct.")

如果不希望多行字符串跨越多行,为什么要编写多行字符串?
''.join(inputRequest.splitlines())
通常来说,模块可能对您很有用,尽管在这个特定示例中它非常愚蠢。您可以在此处将其用作
textwrap.wrap(inputRequest,width=sys.maxsize)[0]
-正如我所说,在这里使用是非常愚蠢的,但你可能可以想象,如果将它很好地包装到一个80列的终端上,它会更有用一些。感谢你友好的回答。我知道这是一个非常低级的问题,但我只是没有看到一个很好的方法。显然,这就像在t处添加反斜杠一样简单每一行的结尾!使用反斜杠连续体通常被认为是不和谐的。但使用超过72行(或80行或99行,取决于你问谁)也是不和谐的源代码中的字符很长。在要连接的字符串周围使用有点误导性的括号。这些是唯一的选项,缺少某种后处理(如Peter Wood的注释,或在更高级的情况下使用
textwrap
),这并不总是合适的。所以选择哪一个是一个问题,但所有的选择都是混乱的。这些不是单独的字符串;在反斜杠继续之后,它们是相邻的字符串文字标记,因此编译器将它们连接成单个字符串。(这是Python语义所必需的,不是CPython优化或任何东西。)我有一个习惯,对我的语言不太熟悉……我只是想说也可以使用一组引号。是的,我知道。这是一个很好的答案,但我认为如果措辞稍微好一点,可能会更好。(显然不是我在评论中的措辞,除非OP试图编写Python实现…)将其视为转义换行符是正确的吗?类似于在字符串中转义引号的方式吗?@Anthony Yes,这种类比甚至可以帮助您正确猜测如果您(例如)在反斜杠和换行符之间留一个空格会发生什么。请记住这是一种类比,不要走得太远。(当你有疑问时,你必须回到它的实际工作原理上来,如参考文档的lexer部分所述,但如果你有疑问,你几乎不应该有任何疑问。)这个答案中没有任何东西,只有指向某个外部图像的链接。这不是答案。