Python 对重复出现两次以上的字符进行计数
我正在做一个完整的刽子手项目,这是我在代码学院学习完Python之后的第一个独立项目。(Github:) 目前,它能够识别字符串中重复出现的字符,但如果重复出现两次以上,则不会计算字符重复的额外次数 例如,如果用户选择“电影”作为类别,而程序选择“全金属外壳”,它将计算两个“l”,但不计算其后的任何其他“l”,从而使程序处于不稳定状态,用户无法完成它,除非他故意犯错误。 这是控制台上的外观(猜测字母的数组是打印的):Python 对重复出现两次以上的字符进行计数,python,Python,我正在做一个完整的刽子手项目,这是我在代码学院学习完Python之后的第一个独立项目。(Github:) 目前,它能够识别字符串中重复出现的字符,但如果重复出现两次以上,则不会计算字符重复的额外次数 例如,如果用户选择“电影”作为类别,而程序选择“全金属外壳”,它将计算两个“l”,但不计算其后的任何其他“l”,从而使程序处于不稳定状态,用户无法完成它,除非他故意犯错误。 这是控制台上的外观(猜测字母的数组是打印的): 选择一个字母:k “K”是正确的 f u l m e t a j c k
选择一个字母:k “K”是正确的 f u l m e t a j c k
有关区块:
...
def word_选择器(自身、类别):
如果在self.words中包含类别:
self.properCategory=True
打印(“\n您选择:“+category+””作为此轮的类别。\n”)
self.picker=random.randint(0,len(self.words[category])-2
self.selected_category=self.words[category]
self.word=self.selected\u类别[self.picker].lower()
self.word=self.word.replace('','')
self.word\u排序=已排序(self.word\u)
self.counter=collections.counter(self.word)
self.isAlpha=True
...
...
def正确(自我):
如果self.user\u选择self.word和len(self.gusted\u正确)
您可以使用pythons计数器来计算每个字符在一个单词中出现的次数。从那里很容易过滤掉那些不止一次发生的事件
例如,在您的情况下,您可以使用以下内容:
word = "full metal jacket"
counts = Counter(word)
recurring = {k:v for k, v in counts.items() if v > 1}
这将给你:
{'e':2't':2':2'a':2'l':3}
您可以使用pythons计数器来计算每个字符在一个单词中出现的次数。从那里很容易过滤掉那些不止一次发生的事件
例如,在您的情况下,您可以使用以下内容:
word = "full metal jacket"
counts = Counter(word)
recurring = {k:v for k, v in counts.items() if v > 1}
这将给你:
{'e':2,'t':2,':2,'a':2,'l':3}
我只需在所有位置循环并替换猜测字母。下面是一个愚蠢、糟糕、低效的工作代码,只是为了给您提供一种可能的方法
import random
import re
class Hang:
def __init__(self):
print('Hello Hangma: \n')
def replacer(self):
if not self.position:
self.position = []
while self.guess in self.selected:
self.position.append(self.selected.index(self.guess))
self.selected = self.selected.replace(self.guess,'_',1)
return self.position
def hang(self):
self.guess = input('\nGuess a letter:\n')
assert len(self.guess)==1
#do something
if self.guess in self.selected:
self.position = self.replacer()
for i in self.position:
self.dash = f'{self.dash[:i]}{self.guess}{self.dash[i+1:]}'
else:
print(f'Nope! {self.guess} is not there')
self.position = []
print(self.dash)
return self.dash
def play(self):
self.category = {'movies':['full metal jacket','rambo','commando']}
self.selected = random.choice(self.category['movies'])
self.dash = re.sub('\w','_',self.selected)
self.position = None
print(f'Hit:\n{self.dash}')
while '_' in self.dash:
self.dash = self.hang()
if __name__=='__main__':
game = Hang()
game.play()
我所做的是创建了三个函数。游戏只是一个主要的部分,称之为休息。replacer是一个函数,它替换字母在单词中出现的所有位置,并调用replacer函数来发挥其魔力。您现在可以添加尝试次数,并创建一个刽子手。目前,没有限制;) 我只需在所有地方循环并替换猜测字母。下面是一个愚蠢、糟糕、低效的工作代码,只是为了给您提供一种可能的方法
import random
import re
class Hang:
def __init__(self):
print('Hello Hangma: \n')
def replacer(self):
if not self.position:
self.position = []
while self.guess in self.selected:
self.position.append(self.selected.index(self.guess))
self.selected = self.selected.replace(self.guess,'_',1)
return self.position
def hang(self):
self.guess = input('\nGuess a letter:\n')
assert len(self.guess)==1
#do something
if self.guess in self.selected:
self.position = self.replacer()
for i in self.position:
self.dash = f'{self.dash[:i]}{self.guess}{self.dash[i+1:]}'
else:
print(f'Nope! {self.guess} is not there')
self.position = []
print(self.dash)
return self.dash
def play(self):
self.category = {'movies':['full metal jacket','rambo','commando']}
self.selected = random.choice(self.category['movies'])
self.dash = re.sub('\w','_',self.selected)
self.position = None
print(f'Hit:\n{self.dash}')
while '_' in self.dash:
self.dash = self.hang()
if __name__=='__main__':
game = Hang()
game.play()
我所做的是创建了三个函数。游戏只是一个主要的部分,称之为休息。replacer是一个函数,它替换字母在单词中出现的所有位置,并调用replacer函数来发挥其魔力。您现在可以添加尝试次数,并创建一个刽子手。目前,没有限制;) 我意识到它是假的,但我不得不问,在什么情况下,你会把SSN放入程序源代码注释中?这个问题需要改进。您已经很好地描述了这个问题,github链接的道具和行号也很有用,但这仍然缺少一个最小的、可验证的示例。问题中没有代码。请不要链接到非网站。我知道这是假的,但我必须问,在什么情况下,你会把SSN放进程序源代码注释中?这个问题需要改进。您已经很好地描述了这个问题,github链接的道具和行号也很有用,但这仍然缺少一个最小的、可验证的示例。问题中没有代码。请不要链接到非网站。