2013-03-14 74 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」的,「X」,或「_」(下劃線) 不區分大小寫也如何使用len和大小寫不敏感?

+0

你在這裏問5個問題,並接受沒有答案。如果答案解決了您的問題,您應該點擊它的複選標記。這標誌着問題的答案,所以其他人知道它是完整的。 – Almo 2014-10-10 13:22:56

回答

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 <= ba.issubset(b)簡寫。

+0

如果字符串包含x *或* _,但不是兩者都會中斷。一個更嚴格,但稍微難以閱讀的方法就像'set(int_string) - {'x','_'}!= set()'。 – lvc 2013-03-14 02:41:01

+1

@lvc:你可以做'set(int_string).issubset({'x','_'})'或使用'<='。 – Blender 2013-03-14 02:42:24

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 _.")