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: ... |