我正在制作一个刽子手游戏,我需要更新显示正确字母的表格。到目前为止,该程序打印此
Enter a word: hello
[-----] You have 6 guesses left, enter a letter: h
Correct!
[H----] You have 6 guesses left, enter a letter: e
Correct!
[-E---] You have 6 guesses left, enter a letter: l
Correct!
[--LL-] You have 6 guesses left, enter a letter: o
Correct!
[----O] You have 6 guesses left, enter a letter:
我需要程序做的是组合字符串,例如[H ----] - > [HE ---]等等。我该怎么做?以及当没有更多破折号时结束比赛。
我希望程序看起来像的一个例子是
[H----]
[HE---]
该程序还必须以随机顺序工作,例如......
[----O]
[-E--O]
[HE--O]
[HELLO]
这是我目前的代码
答案 0 :(得分:1)
只需循环通过字符串进行猜测并显示字母,如果该字母已经猜到,或者显示“_”,以防它没有。
In [127]: s = "Apple"
In [128]: already_guessed = ['p', 'e']
In [129]: '[' + ''.join([letter if letter in already_guessed else '_' for letter in s]) + ']'
Out[129]: '[_pp_e]'
答案 1 :(得分:0)
不使用“ - ”重新计算display_string,而是使用display_string的先前值。注意:由于括号,您需要偏移display_string的索引。
display_string = "[" + "".join([x if x == letter else display_string[i + 1] for i, x in enumerate(word)]) + "]"
答案 2 :(得分:-1)
这是我尝试回答的问题,在您提交代码之前写下了这些内容,所以它可能不是您正在寻找的内容,但它确实有效。
Option Explicit
Sub Right6()
Const R6LeftCol = "=RIGHT(RC[-1],6)"
Dim oRng As Range, lRow As Long
lRow = Cells(Rows.Count, "A").End(xlUp).Row
Set oRng = Range("B12")
Range(oRng, Cells(lRow, "B")).FormulaR1C1 = R6LeftCol
Set oRng = Nothing
End Sub