Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对重复出现两次以上的字符进行计数_Python - Fatal编程技术网

Python 对重复出现两次以上的字符进行计数

Python 对重复出现两次以上的字符进行计数,python,Python,我正在做一个完整的刽子手项目,这是我在代码学院学习完Python之后的第一个独立项目。(Github:) 目前,它能够识别字符串中重复出现的字符,但如果重复出现两次以上,则不会计算字符重复的额外次数 例如,如果用户选择“电影”作为类别,而程序选择“全金属外壳”,它将计算两个“l”,但不计算其后的任何其他“l”,从而使程序处于不稳定状态,用户无法完成它,除非他故意犯错误。 这是控制台上的外观(猜测字母的数组是打印的): 选择一个字母:k “K”是正确的 f u l m e t a j c k

我正在做一个完整的刽子手项目,这是我在代码学院学习完Python之后的第一个独立项目。(Github:)

目前,它能够识别字符串中重复出现的字符,但如果重复出现两次以上,则不会计算字符重复的额外次数

例如,如果用户选择“电影”作为类别,而程序选择“全金属外壳”,它将计算两个“l”,但不计算其后的任何其他“l”,从而使程序处于不稳定状态,用户无法完成它,除非他故意犯错误。 这是控制台上的外观(猜测字母的数组是打印的):


选择一个字母: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链接的道具和行号也很有用,但这仍然缺少一个最小的、可验证的示例。问题中没有代码。请不要链接到非网站。