多行输入提示缩进干扰输出缩进

时间:2016-05-24 15:36:49

标签: python-3.x input indentation multiline

我有一个函数可以打印图像中找到的像素数,然后询问用户他们希望如何继续。只要解释器​​没有从函数中移动,我希望所有输出都相应缩进。

一个这样的“子输出”(输入提示)需要是多行。所以我开始使用3 *引号('''),后跟两个空格来创建缩进。问题的最后是“你想怎么做?”我用了很多回报。文本编辑器假设有一个额外的缩进,因此我将其删除,导致以下建议列表与输入变量command齐平。这是它的外观:

def returnColors():

  #
  # lots of code that does stuff...
  #

  print("The source image contains", lSize, "px.")       
  print("")                                                 
  command=input('''  What would you like to do? You can say:

  get all                                                   
  get unique                                                

  ''')                                                      

这个问题是解释器确认将函数体与函数语句分隔为实际字符串内容的缩进,导致输出如下所示:

The source image contains 512 px.

  What would you like to do? You can say...

    get all
    get unique

    |

避免这种情况的唯一方法是通过破解解释器中的缩进。虽然我知道它有效但看起来不太好。那我有什么选择呢?

编辑:因为我有截图_

enter image description here

1 个答案:

答案 0 :(得分:1)

你应该记住的一件事是,一旦你开始一个多行字符串声明,所有文本直到它被关闭是按原样进行的,并且不再考虑语法(即缩进)。

您可以使用显式换行开始多线,以便多行字符串中的所有内容都可以在代码中缩进。

IE。

command=input('''
  What would you like to do? You can say:

  get all                                                   
  get unique

  ''')    

会在顶部打印出一个新行,但会更明确地显示文本的格式,并且应该如图所示。