2013-03-14 25 views
2

如何檢查123456789多少次0出現在輸入,並把它在列表中。如何檢查輸入中出現的次數0 1 2 3 4 5 6 7 8 9並將其放入Python列表中?

例如有人輸入122033之後,該函數應該返回以下列表:

[1,1,2,2] 
  • result[0]=1意味着0發生1次
  • result[1]=1意味着1中發生1次
  • result[2]=2裝置2發生2次
  • result[3]=2意味着3發生2次

請幫我一直堅持如何做一兩天。它說,我想用結果= 10 * [0]

這裏是一個輸出

Enter a string of numbers: 4567899678 
4 occurs 1 time 
5 occurs 1 time 
6 occurs 2 times 
7 occurs 2 times 
8 occurs 2 times 
9 occurs 2 times 

到目前爲止,我嘗試這樣的一個例子,但我不認爲這是我怎樣,我想做到這一點。

def countdigits(aString): 
    d = {} 
    for i in aString: 
     if i in d: 
      d[i] = d[i]+1 
     else: 
      d[i] = 1 
    return d 
def main(): 
    aString=input("Enter numbers:") 
    print(countdigits(aString)) 
main() 
+1

提供的答案是偉大的。他們正是你想要的。如果這是作業,但我不認爲圖書館解決方案將被接受。你也不會學到任何東西。 – msvalkon 2013-03-14 10:01:27

+0

對不起,我知道你的答案是正確的,但我還沒有真正被允許使用集合,因爲我們在我們的研究中並不遙遠。我想使用def countdigits(aString)和def main()。不便之處請諒解。 – Jett 2013-03-14 10:01:30

+0

@Jett請提供您已嘗試的代碼 – msvalkon 2013-03-14 10:02:04

回答

3
>>> import collections 
>>> a = collections.Counter([1,1,2,2]) 
>>> a 
Counter({1: 2, 2: 2}) 
>>> a[1] 
2 
>>> a[2] 
2 
>>> 

,如果你不應該使用collections

def count_digits(s): 
    res = [0]*10 
    for x in s: 
     res[int(x)] += 1 
    return res 
+0

這個作品非常感謝你。如果你不介意,我還有一個問題。我怎樣才能刪除0。因此,列表出來[1,1,2,2]而不是[1,1,2,2,0,0,0,0,0,0] – Jett 2013-03-14 10:26:53

2

雖然你的任務是更好地使用例如解決Counter,與其他答案一樣,它不符合使用result = 10 * [0]的提示。這裏的目的的解決方案:

def digit_count(number): 
    # Make sure number is a string 
    number = str(number) 
    counts = [0] * 10 
    for digit in number: 
     counts[int(digit)] += 1 
    return counts 

counts = digit_count(122033) 

for digit, count in enumerate(counts): 
    if count == 0: 
     continue 
    print "{0} occurs {1} time{2}".format(
     digit, count, "" if count == 1 else "s") 

注意digit_count只接受一個正整數或一串數字。如果您提供負數,浮點數或複數,則會引發ValueError。

+0

我認爲這可能適合於作業 - 雖然我相信如果最終的結果是過濾空出現的話,那麼使用「dict」會讓OP更好地運行......無論如何 - 在這種情況下破壞是好的 - 因爲它意味着它是非數字 - 我會考慮理想的行爲... – 2013-03-14 10:15:56

0

去除零:

def count_digits(s): 
    res = [0]*10 
    for x in s: 
     res[int(x)] += 1 
    while 0 in res: 
     re.remove(0) 
    return res 
相關問題