为什么此python字符序列代码会产生意外结果?

希哈卜

我正在编写一个python程序来查找单词中的字符序列。但是程序给出了意外的结果。我发现了一个类似的程序,可以很好地工作。对我来说,我认为这两个程序非常相似,但不知道为什么其中一个不起作用

  1. 该程序不起作用:
# Display the character sequence in a word
dict={}
string=input("Enter the string:").strip().lower()

for letter in string:
    if letter !=dict.keys():
        dict[letter]=1        
    else:
        dict[letter]=dict[letter]+1

print(dict)
  1. 正在运行的程序:
def char_frequency(str1):
    dict = {}
    for n in str1:
        keys = dict.keys()
        if n in keys:
            dict[n] += 1
        else:
            dict[n] = 1
    return dict

print(char_frequency('google.com'))
  1. 第一个程序的输出为:

输入字符串:google.com

{'g': 1, 'c': 1, 'm': 1, 'o': 1, 'l': 1, '.': 1, 'e': 1}
  1. 第二个程序的输出为:

{'c': 1, 'e': 1, 'o': 3, 'g': 2, '.': 1, 'm': 1, 'l': 1}

以上是正确的输出。

现在我心中的问题。

一世。为什么第一个程序无法正常运行?

ii。这两个程序的意识形态是否不同?

海鸥

实际上,您使用的if语句有一个小错误。请看下面的修改程序。

注意:另外,请确保不要将诸如dict之类的预定义数据类型名称用作变量名称。我已将其更改为d

>>> d = {}
>>>
>>> string=input("Enter the string:").strip().lower()
Enter the string:google.com
>>> 
>>> for letter in string:
...     if letter not in d.keys():
...         d[letter] = 1        
...     else:
...         d[letter] = d[letter] + 1
... 
>>> print(d)
{'g': 2, 'o': 3, 'l': 1, 'e': 1, '.': 1, 'c': 1, 'm': 1}
>>> 

您还可以查看在终端上执行的以下语句。

d.keys()进行比较将始终返回,False因为这里的key是一个字符串,而d.keys()始终是dict_keys(Python3)和list(Python2)类型的对象

>>> d = {"k1": "v1", "k3": "v2", "k4": "Rishi"}
>>> 
>>> d.keys()
dict_keys(['k1', 'k3', 'k4'])
>>> 
>>> "k1" in d
True
>>> 
>>> not "k1" in d
False
>>> 
>>> "k1" == d.keys()
False
>>> 
>>> "k1" not in d
False
>>>

您的2个问题的答案:

  1. 因为该语句letter != dict.keys()始终True如此,所以键数不会增加。只需将其更改为即可letter not in dict.keys()最好使用d代替,dict这样语句看起来像letter not in d.keys()

  2. 这两个程序的逻辑相同,即遍历字典,检查字典中是否存在键。如果不存在,请创建一个带有count的新键,1否则将相关计数增加1

非常感谢。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么C中的此函数会产生意外结果?

为什么此装饰程序会产生意外的输出?

从字符声明字符串会产生意外结果。为什么会这样呢?

为什么“大于”数字比较会产生意外结果

为什么在Excel中查找会产生意外结果?

为什么mySQL查询会产生意外结果?

使用char **指针的字符串操作代码会产生意外结果

寻路代码会产生意外结果

为什么此Perl DateTime数学会产生意外结果?

为什么在这里多次分配会产生意外的结果?

为什么-O4编译器指令会产生意外结果?

为什么在case语句内部调用random()会产生意外结果?

为什么在std :: string上使用Sizeof运算符会产生意外结果?

为什么MySQL中的Modulo(带有负数)会产生意外结果?

指针取消引用的多态会产生意外的结果……为什么?

为什么将char类型用作循环索引会产生意外结果?

为什么PHP会产生意外的输出?

使用 "%" 操作会产生意外结果

为什么我的代码会产生此输出(Python)?

为什么此代码会产生错误?

为什么此代码会产生IndexOutOfBoundsException?

为什么代码会产生以下结果?

尝试将字符串/字符转换为整数会产生意外结果

参数化的字符串格式会产生意外结果

以特殊字符开头或结尾的单词的单词边界会产生意外结果

诊断自定义函数为什么会产生意外警告(关于position_jitterdodge)

在python中绘制3D零均值,单位方差高斯会产生意外结果

使用python进行二进制读取会产生意外结果

使用goroutine进行迭代会产生意外结果