2013-03-14 4 views
1
stop = False 
text_count = 0 
while stop is False: 
    int_string = input("What is the initial string? ") 
    int_string = int_string.lower() 
    for a in int_string: 
     for a in b: 
      text_count += 1 
    if text_count < 3: 
     print("Error: string must have at least 3 characters.") 
    elif len(int_string) != 'X' or len(int_string) != 'x' or len(int_string) != '_': 
     print("Error: string must contain only X and _.") 

Эта строка должна быть не менее 3-х символов, и он должен состоять только из «X» характеров, «х», или «_» (подчеркивание) Case Нечувствительность такжеКак использовать len и регистр без учета регистра?

+0

Вы задали 5 вопросов здесь, и не приняли никаких ответов. Если ответ устраняет вашу проблему, вы должны нажать на нее. Это указывает на вопрос, как ответ, так что другие люди знают, что он завершен. – Almo

ответ

2

Вы можете преобразовать его в set объекта и сравнить его с набором символов, которые вы позволить:

while not stop: 
    int_string = input("What is the initial string? ").lower() 

    if len(int_string) < 3: 
     print("Error: string must have at least 3 characters.") 
    elif set(int_string) <= {'x', '_'}: 
     print("Error: string must contain only X and _.") 

a <= b представляет собой сокращенную a.issubset(b).

+0

Это сломается, если строка содержит x * или * _, но не обе. Более строгий, хотя и немного сложный для чтения подход будет выглядеть как 'set (int_string) - {'x', '_'}! = Set()'. – lvc

+1

@lvc: вы можете сделать 'set (int_string) .issubset ({'x', '_'})' или использовать '<='. – Blender

1

Вот еще один вариант:

while not stop: 
    int_string = raw_input("What is the initial string? ").lower() 
    if len(int_string) < 3: 
     print("Error: string must have at least 3 characters.") 
    elif any(ch not in ('x', '_') for ch in set(int_string)): 
     print("Error: string must contain only X and _.") 
Смежные вопросы