如何使用len()创建一个充满星号的等长字符串?

时间:2014-12-06 00:30:35

标签: python list dictionary random string-length

我的任务是创建一个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
*******

1 个答案:

答案 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()