【Python基础 字典】汽车限行

最近在准备期末机考,看实验课的代码,发现有提升效率的空间,就改了改测评过了。

这个效率提升是砍掉了循环结构判断车牌号末尾数字的奇偶,改用纯数学方法(提取数字判断奇偶)

任务描述

为缓解城市交通压力,武汉市交管局对于长江一桥及江汉一桥实行限行,规定如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

每日7时至22时,中型(含)以下载客汽车(新能源车除外)按车牌尾号分单双日通行(法定节假日、休息日除外),车牌尾号为英文字母的,按字母前最后一位阿拉伯数字对应日期的通行管理措施通行。出租车不受单双日限制通行。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬请根据输入的汽车牌号判断单双日通行。

编程要求

输入武汉市车牌号,本题中正确的数据形式为"鄂A-*****",8位长度。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

前3位为'鄂A-',后5位字符串由数字字符和大写字母字符(不包含大写O与I字母)组成,大写字母数量不超过两个,车牌号最后一位可能是数字字符或字母字符。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬

缓解城市交通压力武汉市交管局对于长江江汉实行规定如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 每日7时至22时,中型(含)以下载客汽车(新能源车除外)按车牌尾号分单双日通(法定节假日、休息日除外),车牌尾号为英文字母的,按字母前最后位阿拉伯数字对应日期的通管理措施通。出租车不受单双日制通。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 请根据输入的汽车牌号判断单双日通。 编程要求 输入武汉市车牌号,本题中正确的数据形式为"鄂A-*****",8位长度。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 前3位为'鄂A-',后5位字符串由数字字符和大写字母字符(不包含大写O与I字母)组成,大写字母数量不超过两个,车牌号最后位可能是数字字符或字母字符。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 如'鄂A-FQ234'或'鄂A-1D23A'。 如果输入为正确的车牌号,则对应输出‘单号通’或'双号通'。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 如果输入不正确,输出'Data Error!'
最新发布
04-03
<think>嗯,用户想编写个程序来判断武汉车牌号的单双日通情况。首先,我需要了解武汉的规则。根据引用[1],政策是根据车牌尾号的数字来判断单双号的,尾号为单数(1、3、5、7、9)允许单日通,双数(0、2、4、6、8)允许双日通。如果尾号是字母,则需要往前找最后个数字作为判断依据。 接下来,我需要确定如何从车牌号中提取尾号数字。武汉的车牌格式通常是“鄂A”后面跟着5位字符,可能包含字母和数字。例如“鄂A12345”或“鄂AB123C”。处理步骤应该是从右往左遍历车牌字符串,找到第个数字字符,然后判断其奇偶性。 编程时需要注意几个关键点:首先,处理车牌号中的字母情况,比如尾字符是字母的话,要往前查找。其次,确保能够正确处理各种可能的车牌格式,比如中间有字母的情况。例如“鄂A1K3P5”,可能需要从右到左找到第个数字5,然后判断是否为单数。 然后,我需要考虑代码的结构。首先,输入车牌号,可能需要去除空格和转换大小写。然后,从右向左遍历每个字符,找到第个数字。如果找不到数字,可能需要提示无效车牌。找到数字后,判断奇偶性,并输出对应的信息。 测试用例也很重要。比如测试“鄂A12345”应该返回单号,尾号5是单数。测试“鄂A8888Z”应该找到最后个数字8,双号。还有像“鄂AABCDE”这种没有数字的情况,需要提示无效。 另外,可能要考虑用户输入的大小写问题,比如字母是大写还是小写,但处理时统转为大写或小写可能更好,避免错误。还有,车牌号长度的问题,鄂A后面通常有5位,但程序中应该处理不同长度的情况,只要找到最后个数字即可。 最后,需要确保代码的健壮性,比如处理用户输入的空格或其他特殊字符,使用strip()方法去除前后空格。如果车牌号中没有数字,则给出相应的提示,而不是让程序崩溃。</think>根据武汉市现机动车政策[^1],车牌单双号判断规则如下: 1. 以车牌最后位阿拉伯数字为准 2. 字母结尾时向前追溯最近数字 3. 单号(1,3,5,7,9)允许单日通 4. 双号(0,2,4,6,8)允许双日通 实现代码示例: ```python def check_plate(plate): # 预处理车牌号(去除空格/转大写) plate = plate.strip().upper() # 逆向查找数字 for char in reversed(plate): if char.isdigit(): last_num = int(char) return "单号" if last_num % 2 else "双号" return "无效车牌" # 使用示例 plate_num = "鄂A123K5" # 最后数字是5(单号) print(f"{plate_num} 规则:{check_plate(plate_num)}") ``` 测试案例: 1. `鄂A12345` → 最后数字5(单号) 2. `鄂A8888Z` → 最后数字8(双号) 3. `鄂ABCDE3` → 最后数字3(单号)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值