关于python:计算字母串长度并转换为真/假语句

counting alphabetic string length and turning into true/false statements

我有一个简单的问题,关于我个人项目中的一个问题。我有一个绞刑人游戏,我在Python中创造的乐趣和隐藏的单词最初呈现以下方法中的用户;说单词是hello,它将是"^^^^^",就像字符替换为"^"。现在我试图编写一个函数来计算在集合字符串中显示的字符数量,所以假设我在apples中猜到了a和p,现在我有了下面的视图"app^^",

现在我的问题是,如果超过一半的字符已经显示,那么我想返回一个真或假布尔语句,例如下面的例子;'app^^^'=真,因为至少显示了1/2;因此返回值=真但是像'a^^^^^'=false,没有显示1/2字符,

我觉得很遗憾,没有张贴任何东西,但我想出了一个主意,如何做到这一点;因此,我觉得如果我可以删除len(app^^^),但删除了'^'的计数,那么如果计数大于len(app^^^^)的一半,而不删除'^',则返回true,否则返回false。我相信它能起作用,但不知道怎么做,再次感谢各位。


不计算字母,而是计算^个字符:

1
2
3
4
5
6
s = 'app^^^'

if s.count('^') >= len(s) / 2:
    # Half of the characters are `^`s
else :
    # Less than half ...

实现您提出的解决方案的代码是:

1
2
def is_half_revealed(s):
    return len(s.rstrip('^')) / float(len(s)) * 2 >= 1

尽管您应该考虑重新构造代码,使存储"显示多少答案"的数据与显示给用户的字符串分离,而不是直接检查该字符串。


更通用的解决方案

1
2
3
4
5
def percent_solved(s):
    return 100 - s.count("^") * 100 / len(s)

if percent_solved(s) >= 50:
    ...