【问题标题】:Using an Array to analyze input and utilizing it for a counter of array listing within the input in Python使用数组分析输入并将其用于 Python 输入中的数组列表计数器
【发布时间】:2011-11-19 03:23:39
【问题描述】:

这次我卡在了第二部分。以为会更容易,但我最终得到了一堆语法错误。这是程序:

def main():

    Characters = ["A", "B", "C", "D", "E", "F", "G"\
                  , "H", "I", "J", "K", "L", "M", "N"\
                  , "O", "P", "Q", "R", "S", "T", "U", "V"\
                  , "W", "X", "Y", "Z"]

    text = (input("Type Something:  ")).upper()
    text2 = text.partition("!")[0]

    print(text2) #Utilizing it to make sure program is cutting the string once it 
                        #reaches an exclamation point

    for i in range(len(text2)):
        print(i, text2[i])

    A = 0
    B = 0
    C = 0
    D = 0
    E = 0
    F = 0
    G = 0
    H = 0
    I = 0
    J = 0
    K = 0
    L = 0
    M = 0
    N = 0
    O = 0
    P = 0
    Q = 0
    R = 0
    S = 0
    T = 0
    U = 0
    V = 0
    W = 0
    X = 0
    Y = 0
    Z = 0
    other = 0

main()

我需要帮助将数组应用到计数器中。我在想:

for y in text2:
            if Characters["A"] in text2:
                A+=1
        print(y)

但是之后我遇到了一堆错误。我有一个较早的版本,但如果计算所有单位而不是特定单位。在我的脑海中,我觉得我将不得不为计数器使用 len 函数,但我无法考虑在哪里。有人可以在这样的事情中解释正确的编程和正确使用 len 函数。感谢提供帮助的人。

抱歉这个令人困惑的问题

*老虎!风暴*

程序将只读:TIGER

然后我要做的是编写一个代码,程序将在其中计算输入中的每个字母。所以利用数组它应该产生一个计数:T = 1,I = 1,G = I,E = 1,R = 1 但是为计数器编写程序是我遇到的麻烦。

【问题讨论】:

  • 我什至无法理解你想要做什么。您可以从显示输入示例和相应的所需输出开始。
  • 很抱歉。当一个人输入一些东西时,让我们说:TIGER!storm 程序将只读取 TIGER。然后我要做的是编写一个代码,程序将在其中计算输入中的每个字母。所以利用数组它应该产生一个计数:T = 1,I = 1,G = I,E = 1,R = 1 但是为计数器编写程序是我遇到的麻烦。再次为这个令人困惑的问题感到抱歉。

标签: python arrays counter


【解决方案1】:

认为您要做的是计算每个字母在text2 中出现的频率。如果是这样的话,这里就有很多问题了。

首先,不要再说数组了。这些是您正在使用的列表。数组在 Python 中并不常见。

其次,你写了if Characters["A"]。这没有任何意义。列表由整数索引。你必须说if Characters[0]。因此,要修复您的代码,您必须执行类似的操作

for c in text2
    if c == Characters[0]:
        A += 1
    if c == Characters[1]:
        B += 1
    ...
    if c == Characters[25]:
        Z += 1

但这完全是错误的做法。

您可能应该使用字典string 模块中还有一些有用的属性,可以省去写出每个字符的麻烦。

这样的事情会容易得多。

import string

text = (input("Type Something:  ")).upper()
text2 = text.partition("!")[0]

chars = {}
for c in string.uppercase:
    chars[c] = 0

for c in text2:
    chars[c] += 1

print chars

还有更紧凑的方式来做这种事情。但这对你来说应该是比较清楚的。请不要写26个if语句,有26个变量。

【讨论】:

  • 非常感谢您,这正是我想要的。我对它的简单程度感到惊讶,我完全使编码过于复杂。我会看看如何使用字典,它会让事情变得更容易。谢谢。
【解决方案2】:

我总是使用 Python maps 来解决计数问题。所以我的解决方案是这样的:

frequences = {}
the_input = (input("Type Something:  ")).upper()
text = the_input.split('!')[0]

for char in text:
    # find char frequence in map or return 0
    frequences[char] = frequences.get(char, 0) + 1

print frequences

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 2014-11-18
    相关资源
    最近更新 更多