如何导入重新格式化代码

时间:2015-03-17 11:49:00

标签: python import

我正在尝试导入re并且在我的原始代码中有一个牌照格式,但是我有代码但只是不知道放在哪里。我希望我的编码清楚这一点。

import re
    number_plate = re.match('\d{2}[A-Z]{2}\d{3}','12MNB36'):

以上代码是我想要输入到下面显示的实际代码中的内容。

over_limit = []
file=open("newfile.txt", "w")

while True:
    speed = float()
    distance = 10
    time =float(raw_input('enter time'))
    speed = distance/time
    number_plate = raw_input('enter number plate')
    print speed


if speed>31.2928:
    #70 mph converted into m/s
    over_limit.append(number_plate)
    print over_limit
    file.write(number_plate)


else:
    print 'ok'
file.close()

1 个答案:

答案 0 :(得分:0)

以下是我可能会写出你想要做的事情:

import re

PLATE_PATTERN = r'\d{2}[A-Z]{2}\d{3}'

with open("newfile.txt", "w") as f:
    over_limit = []
    while True:
        distance = 10
        print
        time  = raw_input('Enter time: ')
        if time.lower() == 'x':
            print("Goodbye.")
            break
        speed = distance / float(time)
        print("Speed: %s" % speed)

        if speed>31.2928:
            #70 mph converted into m/s
            print('Over Limit!')
            while True:
                number_plate = raw_input('Enter number plate: ')
                if re.match(PLATE_PATTERN, number_plate):
                    over_limit.append(number_plate)
                    f.write(number_plate)
                    print("Plate Recorded.")
                    break
                else:
                    print("error: '%s' didn't match regex '%s'" % (number_plate, PLATE_PATTERN))

        else:
            print('Speed OK')

行动中:

Enter time: 1
Speed: 10.0
Speed OK

Enter time: .2
Speed: 50.0
Over Limit!
Enter number plate: ABC123
error: 'ABC123' didn't match regex '\d{2}[A-Z]{2}\d{3}'
Enter number plate: 12AB345
Plate Recorded.

Enter time: x
Goodbye.

有很多变化,例如使用with块来处理文件句柄和输出格式,但大多数更改都归结为程序流程。

除了if/else语句之外,代码还使用了有意的无限循环while True,当满足某个条件时,它将被“打破”(带break)。这与其他语言中的do/while构造类似。

这个想法是用户输入一个时间,如果您从中计算的速度超过了速度限制,您只关心它。

如果没有,你只需再问一次。

它确实如此,只有 你关心车牌号码吗?那么当你问它时。您强制用户输入有效的牌照 - 无效的牌照(未使用正则表达式匹配的牌照)显示错误,程序会指示用户重试。

一旦用户输入了匹配的牌号,它就会附加到over_limit列表(顺便说一下,你没有做任何事情)并写入文件。请注意,该文件正在'w'模式而不是a模式下打开,因此每次运行程序时,输出文件都将被“清空”。

要优雅地退出,当您被要求一段时间时,您可以输入“x”并且程序显示“Goodbye”并终止。

请注意,自我开始撰写以来,您的评论似乎需要更新PLATE_PATTERN表达式。