2017-04-20 43 views
2

我有我的代碼在此基礎:用戶輸入中有多少個數字和字母?

from tkinter import * 

def clik(z=None): 
    global T 
    s = T.get("1.0",'end-1c') 
    ## what next? 

o= Tk() 

T=Text(o, height=20, width=50) 
T.pack() 
T.bind("<Key>", clik) 

o.mainloop() 

每次用戶鍵入內部文本小的我使用功能來收集輸入的東西。現在的目標是看他使用了多少個數字和字母。如果用戶輸入看起來像'Abs3 asdasd asd11 111 11ss',那麼使用isalpha()和isalnum()進行分割並檢查它並不會很好。如果我想要了解Text小部件中當前數量和字母數量的信息,如何在Text小部件內部繼續跟蹤和存儲用戶輸入內容? 預先感謝您

+0

當你說「分割和檢查isalpha()和isalnum()」時,你在分裂什麼? (空格?,空字符串?) – bunji

+0

空白。如果用戶只會提供如下輸入:'我7歲',但如果他'我7歲',7yrs既不是isalnum也不是isalpha, –

+0

那麼你計算的字數只包含字母字符以及只包含數字的單詞的數量還是你想要的所有字母和數字的總數?如果「我今年7歲」的字母數爲11或4? – bunji

回答

1

要獲得字母和數字字符(而不是單詞)的計數不要分割在空格,單獨檢查每個字符。

s = ' Abs3 asdasd asd11 111 11ss' 

alpha_count = 0 
digit_count = 0 
for c in s: ## here we are looping over every character in the string 
    if c.isalpha(): 
     alpha_count += 1 
    elif c.isdigit(): 
     digit_count += 1 

print(alpha_count, digit_count) 

(14,8) 
+0

謝謝,我還有一個問題:如果我使用這個「s = T.get(」1.0「,'end-1c') 「它不計算第一個類型的數字,所以如果我在內部小工具'a'內輸入字母/數字,它不會看到它,除非我點擊空格或另一個字母/數字。是否有方法從用戶輸入很開始嗎? –

+0

也許是因爲你從索引1開始,而不是從索引0開始。但這是一個單獨的問題,應該被單獨詢問,而不是在評論中。 – bunji

+0

我做了,謝謝http://stackoverflow.com/questions/43526918/how-to-trace-user-input-from-first-hit-of-the-button-in-text-widget –

1

迭代字符串。

def click(event): 
    chars, nums = 0,0 
    for char in T.get("1.0","end-1c"): 
     if char.isalpha(): chars += 1 
     elif char.isdigit(): nums += 1 

    print("Characters: %d Numbers: %d"%(chars, nums)) 
相關問題