2017-04-20 74 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)) 
相关问题