2014-04-03 34 views
1

我目前正在編程課程的介紹中,我們正在使用python。我們被允許有外面的幫助,所以我發佈這個很好。直方圖和不區分大小寫的python?

因此,這裏是我想寫程序:

使用Python字典寫一個程序,執行以下操作:

  1. 要求用戶輸入一段文字。
  2. 顯示文本中每個字母的字母出現的頻率。
  3. 你的程序應該不區分大小寫,即'a''A'應該算作同一個字母。
  4. 顯示字母表中的所有字母,包括那些具有0

頻率這裏是我迄今有:

def histogram(L): 
d = {} 
for x in L: 
    if x in d: 
    d[x] += 1 
    else: d[x] = 1 
return d 
print histogram("banana") 

現在與我的問題是,它只顯示單詞中的字母並區分大小寫。不過,我確實需要大小寫不敏感的幫助。我GOOGLE了幾個小時,並找不到適合我的問題的解決方案。所以,如果你有建議,或者如果你能爲我展示一個例子,我非常感激。

+5

兩個提示:1.'string.ascii_lowercase'中包含所有字母(一旦您導入字符串);和2.'「A」.lower()==「a」'。但是,SO不是*要求「爲我寫一個示例程序」的地方。 – jonrsharpe

+1

@jonrsharpe,但在5分鐘內有三個例子... –

回答

0
import string 

def histogram(L): 
    d = {} 
    for x in string.ascii_lowercase: 
     d[x] = 0 
    for x in L: 
     if x in string.ascii_letters: 
      x = x.lower() 
      if x in d: 
       d[x] += 1 
      else: d[x] = 1 
     else: 
      continue 
    return d 
print histogram("HeLlo WOrld!!") 
+0

你甚至試過這個代碼? – Hyperboreus

+1

@Hyperboreus是啊 –

+2

@ d_rez90:複習第4點:顯示所有字母,即使是那些頻率爲零的字母。或者我錯過了什麼? :) – logc

2

您需要初始化所有小寫字母爲零的字典。只有這樣你才能開始用段落中的字符(小寫)來更新它。

import string 

def histogram(paragraph): 
    histogram = {} 
    for char in string.lowercase: 
     histogram[char] = 0 
    for char in paragraph: 
     if char.lower() in string.lowercase: 
      histogram[char.lower()] += 1 
    return histogram 

這是一個測試。檢查 'T' 被計數4次,其中包括第一 'T':

In [6]: paragraph = """ 
    ...: This is a paragraph. It goes over some lines. And 
    ...: there are newlines in between! 
    ...: """ 

In [15]: histogram(paragraph) 
Out[15]: 
{'a': 6, 
'b': 1, 
'c': 0, 
'd': 1, 
'e': 12, 
# ... 
't': 4, 
# ... 
'y': 0, 
'z': 0} 
1

一些提示:

(1)@jonrsharpe使得好的點"StrInG".lower() == "string"

(2) string.ascii_letters包含字符串中的所有小寫字母和大寫字母

(3)set(iterable)返回存儲在集合中的可迭代元素的唯一元素;此外,字符串是可迭代

(4)dict().fromkeys(iterable, 0)創建存儲作爲一個關鍵值爲0

iterable與每個項目的字典這應該讓你很長時間了。

+0

謝謝你的提示! – user3494562

0
def histogram(L): 
#do all the letters 
d = {z:0 for z in map(lambda x: chr(ord("a") + x), xrange(26))} 
for x in L: 
    x = x.lower() 
    try: 
    d[x] += 1 
    except KeyError: 
    print("bad char") 
return d 
print histogram("banana")