gpt4 book ai didi

python - 创建一个函数,由于某种原因陷入循环

转载 作者:行者123 更新时间:2023-12-01 05:14:47 26 4
gpt4 key购买 nike

所以我正在编写一个非常基本的函数,它接受一个字符串并返回列表中最常见的字符。由于某种原因,它陷入了循环。代码如下:

def frequent(string, amount):
'''frequent(str) --> list
This function takes a string and returns a list of the
most frequent characters in order, without repetition.'''
values = []
common = ''
while len(values) != amount:
for char in string:
if string.count(char) > string.count(common):
common = char
values.append(char)
string = string.strip(char)
return values

最佳答案

您的代码陷入循环,因为当 common == "" ,即当 while循环开始运行,string.count(common) == len(string) + 1 (不是 0,正如您所期望的那样)。因此,您再也找不到任何更常见的char添加到 values ,所以values永远不会增长到足以结束循环。

此外,您似乎没有任何计划删除不太常见的 char来自 values当发现更常见的情况时。

正如 Martijn 指出的那样,这可以通过 Counter 轻松实现:

from collections import Counter

def frequent(s, n):
"""Returns a list of the n most frequent characters in s."""
return [char for char, count in Counter(s).most_common(n)]

您可能还需要考虑添加对小写和大写字符('a' 算作 'A' 吗?)、空格和标点符号的处理。

关于python - 创建一个函数,由于某种原因陷入循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23429978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com