2014-02-13 3 views
0
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 в случае '' или "". Как исключить все эти случаи?Невозможно исключить некоторые строки

+0

Не понимаю, является ли пустая строка вашей единственной проблемой? –

+0

Вы пробовали 'len (x) <= 0' или' x == "" '? – Bonzo

+0

как бит 'return x и True' –

ответ

4

Пустые строки не будут запускать любой код для цикла, так как for ch in '' не является по существу не Кооперативным здесь (нет ничего итерации), так что ваш is_alpha возвращает True для пустых строк. Вы должны добавить что-то вроде

if not x: 
    return False 

к началу вашей функции.

(В качестве примечания, ваше break заявление не является необходимым, так как return False выход из функции.

+0

Спасибо. Я ценю ваш вклад. Я не знал ничего такого, как no-op. Мой учебник даже не говорит о no-op. Итак, наконец, коды работают. Еще раз спасибо. –

5

Ваш цикл

for ch in x: 

Will никогда не запускать если len(x) == 0, вы идете прямо к

return True 

Кроме того, если вы

import string 

Вы можете использовать string.ascii_uppercase и string.ascii_lowercase.

Смежные вопросы