我正在创造一个类似刽子手的游戏。基本上让我说我有一个秘密的词,比如,“美女和野兽”,这取决于用户猜测字母和最终的整个单词。
到目前为止,我的代码工作正常,但是如果你想要检查它here you go。以下是相关部分:
def draw(good_guesses, bad_guesses, secret_word): # DRAW spaces, letters & strikes
clear()
print(secret_word)
# printing strikes first
print("Strikes: {}/7".format(len(bad_guesses)))
print("")
# printing bad guesses so far
for letter in bad_guesses:
print(letter, end=" ") # have a space between each element
print("\n") # double blank lines
# print discovered/undiscovered letters
for letter in secret_word:
if letter in good_guesses:
print(letter, end=" ")
else:
print('_', end=" ")
print('')
回到我们的例子。对于字符串“beauty and the beast”,用户将看到以下内容打印出来:
“_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _”
正如您所看到的,字符串的空格打印为下划线,这正是我想要改变的。
如果将其打印出来会好得多:
“_ _ _ _ _ _ / _ _ _ / _ _ _ / _ _ _ _ _”
我想也许有办法定位空格并将它们打印成空格而不是下划线?无法想象如何做到这一点。
感谢。
答案 0 :(得分:3)
在代码的逻辑中,您需要使用相等运算符来处理该情况:==
。所以这样的事情会起作用:
for letter in secret_word:
if letter in good_guesses:
print(letter, end=" ")
elif letter == ' ':
print('/', end=" ")
else:
print('_', end=" ")
print('')
答案 1 :(得分:1)
我认为您要做的是将第40行更改为以下内容:
if letter in good_guesses or letter == ' ':
或者,您可以将字符添加到good_guesses
:
if letter in good_guesses + ' ':
这允许您添加其他字符:
if letter in good_guesses + ' -,': # Commas, spaces, and dashes are "given" to the player.
答案 2 :(得分:1)
您可以对代码进行一些改进,主要是使用str.join
和理解。
这是一个draw
函数,它可以执行原始函数,但需要进行更改和其他一些修改:
def draw(good_guesses, bad_guesses, secret_word):
# DRAW spaces, letters & strikes
clear()
print(secret_word)
# printing strikes first
print("Strikes: {}/7\n".format(len(bad_guesses)))
# printing bad guesses so far
print("{}\n".format(' '.join(bad_guesses)))
# print discovered/undiscovered letters
print("{}\n".format(''.join(letter if letter in good_guesses else '/' if letter == ' ' else '_' for letter in secret_word)))
' '.join(bad_guesses)
优于原始for
循环,因为它不会打印尾随空格。
''.join(letter if letter in good_guesses else '/' if letter == ' ' else '_' for letter in secret_word)
使用空字符串连接迭代器的所有元素。如果正确猜测,迭代器将返回字母,'/'
表示空格,'_'
表示其他所有字符。
在这两种情况下,预先格式化字符串都不必在print
中使用自定义行结尾。
以下是输入字符串的示例输出,用户猜到了所有元音:
>>> draw('aeuy', 'io', 'beauty and the beast')
beauty and the beast
Strikes: 2/7
i o
_eau_y/a__/__e/_ea__