我正在回答的问题要求您验证 Car Reg Plate。它必须查找由两个字母、三个数字、三个字母组成的序列,否则返回“不是有效的邮政编码”之类的消息
我需要知道如何通过将字符串与列表进行比较来检查字符串是否包含某个字母或数字。
到目前为止,我有这个:
# Task 2
import random
import re
def regNumber():
    # Generate a Car Reg Number
    letters = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
    numbers = ["1","2","3","4","5","6","7","8","9","0"]
    letter1 = random.choice(letters)
    letter2 = random.choice(letters)
    number1 = random.choice(numbers)
    number2 = random.choice(numbers)
    letter3 = random.choice(letters)
    letter4 = random.choice(letters)
    letter5 = random.choice(letters)
    licensePlate = (letter1 + letter2 + number1 + number2 + letter3 + letter4 + letter5)
    return licensePlate, letters, numbers
carReg, letters, numbers = regNumber()
print(carReg)
if letters not in carReg: print("Success")
但是,我收到此错误:
TypeError: 'in <string>' requires string as left operand, not list
任何帮助表示赞赏。
你必须检查的字符在字符串中使用此方法,也不会简单地遍历列表你。
尝试使用类似的方法来检查字符串列表中的每个字符:
if any(letter in carReg for letter in letters):
这将切断第一个True,这是我认为你正在寻找的。
注意:如果any像这样使用对您来说是陌生的领域,您也可以随时迭代字符串列表中的每个字符串以检查那些给定的字符。
更新:如果您试图匹配给定的字母和数字格式,那么熟悉 Python 的正则表达式方法以模式匹配到有效车牌比尝试使用循环来验证更有意义(恕我直言)一。我不会为您的特定情况编写正则表达式,但为了给您一个想法,以下内容将允许您匹配 3 个字母后跟 1-4 位数字(我居住的有效车牌)
match_plate = re.compile(r"^[A-Z]{3}\d{1,4}$",re.I)
如果您确实必须使用列表进行检查,则必须使用一系列条件语句将车牌拆分为可以通过迭代进行验证的部分。