Python:最常见的字符计数器

时间:2015-06-18 23:12:59

标签: python string frequency

我正在尝试创建一个程序,要求用户输入一个字符串,然后在字符串中显示最常出现的字符。我不能使用字典等内置功能。我认为我现在的问题是我有一个无限循环。我怎样才能解决这个问题?这是我的代码:

session_start();
include("config.php");

if(isset($_POST['submit'])){

    $id = $_SESSION['uid'];    

    $sql = "DELETE from users WHERE id='$id'";
    mysql_query($sql) or die(mysql_error());
    echo "User has been sucessfully deleted!";
}
else{
    echo "ERROR: User was not deleted";
}

3 个答案:

答案 0 :(得分:0)

我认为您的问题是您要在两个单独的if子句中更改索引值,而您使用的是>=而不是>来检查常用字符。< / p>

想象一下,第一个字母贯穿你的循环。在第一次传递时,它会将其与自身进行比较并增加索引和cc。然后cc更新为1num更新为1。在下一次浏览时,您的信件与第二个字母不匹配,但它确实通过了第二个if案例,保证您的所有值都不会更改,并且index不会增加。我建议将cc >= num更改为cc > num

答案 1 :(得分:0)

如果你根本不能使用任何方法,只需使用double for循环:

def most_common():
    s = input('Enter a string:').lower()
    coun = 0
    best = ""
    for ch in s:
        cn = 0
        for c in s:
            cn += ch == c # will be True or False 1/0
        if cn >= coun: 
            if cn == coun: # catch letters that have equal count
                if ch in best: # avoid adding same char twice
                    continue
                best += ch # id equal and not already added concat to the stirng
            else:
                best = ch # else just set best
            coun = cn
    return 'The most frequently occuring letter(s): {}'.format(best)

适用于具有相同计数的字符:

In [14]: most_common()
Enter a string:foobar
Out[14]: 'The most frequently occuring letter(s): o'

In [15]: most_common()
Enter a string:foobb
Out[15]: 'The most frequently occuring letter(s): ob'

答案 2 :(得分:-1)

if cc >= num:应为if cc > num:

在第一次迭代中,第一个字母将等于字符串的第一个字母(显然),您将输入if ch.lower() == string[index].lower():。这会将cc设置为1,这也会将num设置为1

由于它们都是相同的,只要第二个字母与第一个字母不相同,您就会有一个无限循环,只能进入if cc >= num部分而永远不会更新index过去{{ 1}}。