[英]Iterate through a string to find matching characters and produce different emoji
如何从表情符号化的emojified
中调用contains_char
?
我希望能够遍历guess_word
以查看secret_word
中是否有任何匹配的字母。 如果有匹配的字母,output 应该有绿色的表情符号框。 如果没有匹配的字母,output 应该有白色的表情符号框。 如果存在字母但不在正确的 position 中,则 output 应该有黄色框。
def contains_char(any_length: str, single_character: str) -> bool:
"""Loop iterates through each character in string to find matching character."""
assert len(single_character) == 1
if single_character in any_length:
return True
else:
return False
def emojified(guess_word: str, secret_word: str) -> str:
"""A way to match letters to its corresponding emoji color output. """
assert len(guess_word) == len(secret_word)
WHITE_BOX: str = "\U00002B1C"
GREEN_BOX: str = "\U0001F7E9"
YELLOW_BOX: str = "\U0001F7E8"
emoji_color: str = ""
i: int = 0
contains_char
while i < len(guess_word):
if guess_word[0] == secret_word[0]:
emoji_color += GREEN_BOX
else:
emoji_color += WHITE_BOX
print(emoji_color)
我希望 output 如下图所示。 谢谢!
你把这个复杂化了。
def emojified(guess_word: str, secret_word: str) -> str:
assert len(guess_word) == len(secret_word)
WHITE_BOX: str = "\u2B1C"
GREEN_BOX: str = "\U0001F7E9"
YELLOW_BOX: str = "\U0001F7E8"
output: list = []
this_box: str = ''
for i, char in enumerate(guess_word):
if i < len(secret_word) and secret_word[i] == char:
this_box = GREEN_BOX
elif char in secret_word:
this_box = YELLOW_BOX
else:
this_box = WHITE_BOX
output.append(this_box)
return ''.join(output)
assert
可能不是处理这个问题的最佳方式; Python 可以在某些情况下禁用断言语句。 如果检查应该是您的生产逻辑的一部分,则可能会重构它以引发异常。
如果您确保两个字符串的长度相同,则条件i < len(secret_word)
是多余的,但我认为保留它更安全,以防您想放宽该条件。
追加到字符串的成本相对较高,因此一个好的做法是将事物收集到一个列表中,并且只在最后将列表加入到一个字符串中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.