Python:标准Uk reg的多字符串测试,为什么不工作?

时间:2015-02-10 09:58:24

标签: python

以下是已与主程序分离的部分,只是测试代码段是否有效。 "是"输出用于测试查看错误发生位置所需的每个字符串方法。这似乎不起作用,我无法弄清楚为什么我已经将所有测试用于标准UK注册,检查从输入中出现的字符。

正如您所见,我是一个非常低级别(新的python)程序员,请在考虑提供解​​决方案时考虑。非常感谢

def main():
    reg_number=input("What is your reg number?: ")
    correct_length = False
    first_two_char_capital = False
    next_two_char_digits= False
    next_char_space = False
    last_three_char_capital= False

    first_two_char_capital =reg_number[0:2]
    print(first_two_char_capital)
    next_two_char_digits=reg_number[2:4]
    print (next_two_char_digits)
    next_char_space=reg_number[4:5]
    print(next_char_space)
    last_three_char_capital=reg_number[5:8]
    print (last_three_char_capital)

    if len (reg_number) >= 8:
           correct_length = True
           print("yes1")

           for ch in reg_number:
               if first_two_char_capital.isupper():
                   first_two_char_capital = True
                   print("yes2")
               if next_two_char_digits.isdigit():
                   next_two_char_digits = True
                   print("yes3")
               if next_char_space.isspace():
                   next_char_space = True
                   print("yes4")
               if last_three_char_capital.isupper():
                   last_three_char_capital = True
                   print("yes5")
           if correct_length and first_two_char_capital and next_two_char_digits and next_char_space and last_three_char_capital:
               is_valid = False
               print(reg_number, "is a non-standard_registration")
           else:
               is_valid = True

               print(reg_number, "is a standard registration")
               return is_valid

main()

1 个答案:

答案 0 :(得分:3)

在这里使用正则表达式要容易得多,例如:

import re

if re.match('[A-Z]{2}\d{2} [A-Z]{3}$', input('What is your regnumber:')):
    print('yeah it matches...')