【问题标题】:Unwanted line breaks in python programpython程序中不需要的换行符
【发布时间】:2014-03-18 11:11:35
【问题描述】:

我已经编写了如下详述的基本代码破解游戏(如 Hangman),但是当我在 Python 3.3.1 中运行它时,代码不会像在刽子手游戏中那样出现 _ _ _ _ _ 但是;

_
_
_
_
_

理想情况下,我希望它出现在一条直线上,我在早期版本的 Python 中没有这个问题 - 我已经搜索和搜索,它慢慢让我发疯 - 任何人都可以帮忙吗?那我可以看看添加一个数组来存储一系列代码!

代码:

code = "25485"
guesses = ''
turns = 5
counter = 0   

print ("Welcome to code cracker")

while turns > 0:                   

for char in code:      

    if char in guesses:    

        print (char),    

    else:

        print ("_"),     

        counter += 1    

if counter == 0:        
    print ("\nYou cracked the code") 

    break              

print

guess = input("guess a number:") 

guesses += guess                    

if guess not in code:  

    turns -= 1        

    print ("Wrong\n")    

    print ("You have", + turns, 'more guesses')

    if turns == 0:           

        print ("You failed to crack the code\n"  )

【问题讨论】:

  • 我猜在 Python3 中,print ("_"), 将是一个包含print 函数结果的单元素元组?请改用print("_", end="")
  • 能否请您修正帖子的缩进?例如,while 块在哪里结束?请参阅 How do I format my code blocks? 以获得帮助。
  • @tobias_k - 非常感谢您的帮助和建议。

标签: python arrays line-breaks


【解决方案1】:

在python3中,在print中使用sepend参数:

In [4]: for i in range(4):
   ...:     print ("_", sep='', end='')
#output: ____

【讨论】:

  • 我还没有尝试过,但不是只有print ("_", end='') 可以完成这项工作吗?
  • @gravetii 可能不是那么精确,只想提一下 py3 中有两个参数 ;)
  • @zhangxaochen - 就是这么简单!谢谢 - 真的很感激。
【解决方案2】:

您可以通过join将您的字符转换为一个字符串来简单地避免printing:

def symbolFor(char):
   if char in guesses:
      return char
   else:
      return "_"

pretty = [symbolFor(char) for char in code]
s = "".join(pretty)

【讨论】:

  • 感谢您提供此解决方案,我需要使其尽可能简单,但感谢您提供此解决方案,稍后我将用于更复杂的目的。非常感谢。
  • @PythonNewbie:不客气——这被称为“列表理解”,是 Python 中非常常见的习语。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
相关资源
最近更新 更多