我正在尝试创建一个音乐猜谜游戏,在这个游戏中,艺术家的全名和标题的每个单词的第一个字母都会给出。我当前的代码(有效)能够处理一个单词给艺术家,一个单词用于歌曲;例如伊甸夜曲。在
然而,如果艺术家的名字中有两个部分(EdSheeran),我的代码就不能处理这个问题(类似于歌曲名)。 因此,我想使用限定符来分割艺术家和歌曲,这样我就可以打印出艺术家的全名,然后使用try:和except:函数来打印歌曲每个单词的第一个字母(如果有)。在
当我只使用空格时.split()函数可以正常工作,但是当我使用单词或符号('DOT','|')时,它就不再工作了。在
这是有效的代码:
with open('MusicNames.txt') as file:
text = file.readlines()[number]
artist = text.split()[0]
print('Artist: ' + artist)
song = text.split()[1]
songLetter = text.split()[1][0]
print('First letter: ' + songLetter)
上面的代码适用于这种风格的艺术家和歌曲:
但是,它在这种情况下不起作用:
因此,我使用限定词:
^{pr2}$明智点,它似乎有用。但是,它不再认为答案是正确的,因此请我再猜一次:
我很困惑为什么会发生这种情况,因为如果我要打印两个变量,它们必须相等才能正确,它们会完全相同。虽然程序不这么认为。在
for i in range(2):
guess = input('\nGuess: ')
if guess == song and triesLeft == 2:
global score
score += 3
print('Correct! Current Score: ' + str(score))
在else语句中,我把:print(guess)print(song):
感谢您阅读所有这些,并感谢任何帮助!在
你的短信阅读看起来很可疑:
Doku - hidden in IOBase
它的工作原理与readline()相似,因为它:
(来自Dok)
您永远不会从标题中删去
'\n'
,因此它本质上是而不是euqal到您的输入,因为这个结尾没有'\n'。在您可以使用
song = song.rstrip()
(link)从中删除包括换行符在内的空白。在对于多词歌曲标题,您可能需要检查
^{pr2}$str.split([sep[, maxsplit]])
dokumentationhere,并按如下方式使用:相关问题 更多 >
编程相关推荐