不能排除一些字符串

时间:2014-02-13 21:34:15

标签: python

ASCII_LOWERCASE='abcdefghijklmnopqrstuvwxyz'
ASCII_UPPERCASE='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ASCII_ALL=ASCII_LOWERCASE+ASCII_UPPERCASE

def is_alpha(x):     
    for ch in x:        
        if ch not in ASCII_ALL:
            return False
    return True

这是我的原始代码,在False等情况下仍未返回""。在isalpha()False的情况下,真实''返回""。如何排除所有这些案件?

2 个答案:

答案 0 :(得分:5)

你的循环

for ch in x: 

如果len(x) == 0永远不会,你会直接进入

return True

另外,如果你

import string

您可以使用string.ascii_uppercasestring.ascii_lowercase

答案 1 :(得分:4)

空字符串不会触发for循环中的任何代码,因为for ch in ''本质上是一个无操作(没有任何内容可以迭代),因此is_alpha返回True为空字符串。你应该添加像

这样的东西
if not x:
    return False

到你的功能的开头。

(另请注意,您的break语句是不必要的,因为return False将退出该功能。