我的任务是创建一个Hangman游戏。我正在尝试将"Someword"
转换为"********"
以将其显示给播放器,但是对于任何给定的输入,我的代码会返回一个太多的星号。
以下是我正在阅读的文字文件:
PYTHON
SOMETHING
COMPLETELY
DIFFERENT
(它继续多行)
这是我的代码:
import random
def diction(random):
lives = 5
DICTIONARY = {"secretWord" : random, "lives" : lives}
guess = len(DICTIONARY["secretWord"]) * "*"
print (DICTIONARY["secretWord"])
print (guess)
file = input("Please insert file name: ")
f = open(file)
content = f.readlines()
f.close()
random = (random.choice(content))
random = random.replace(" ", "")
diction(random)
我期待(例如)
的输出PYTHON
******
而是获得
的输出PYTHON
*******
答案 0 :(得分:0)
这里的问题是file.readlines
留下了尾随的换行符,所以像
foo
bar
spam
eggs
变为
['foo\n','bar\n','spam\n','eggs\n']
解决方案是在每个元素上使用str.strip
(或str.rstrip
,如果您预计有前导空格)。例如:
words = map(str.strip, some_file.readlines())
# in Python3, you should call list(map(str.strip, some_file.readlines()))
secret_word = random.choice(words)
或者只是删除你需要的单词而忽略其余的单词。
words = some_file.readlines()
secret_word = random.choice(words).strip()