gpt4 book ai didi

python - 关于 Python 中空 (' ' ) 字符串的字符串方法的问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:47 26 4
gpt4 key购买 nike

当我做计算机科学圈第14章的题时,我发现了一些奇怪的事情。

问题说:“定义一个函数 postalValidate(S),它首先检查 S 是否代表有效的邮政编码:首先,删除所有空格;余数必须采用 L#L#L# 的形式,其中 L 是字母(小写或大写),# 是数字。如果 S 不是有效的邮政编码,则返回 bool 值 False。如果 S 有效,则以良好的格式 L#L#L# 返回相同邮政编码的版本,其中每个 L 都是大写。”

这是我针对这个问题所做的工作:

def postalValidate(S):
if S.count(' ') > 0:
S.replace(' ', '')
if S.isalpha() or S.isdigit() == True:
return False
else:
if S[0].isalpha() and S[2].isalpha() and S[4].isalpha() == False:
return False
else:
if S[1].isdigit() and S[3].isdigit() and S[5].isdigit() == False:
return False
else:
return S.upper()

除此 postalValidate(' d3 L3 T3') 外,所有输入均正确。我使用 S.count 来识别输入中有多少个“”,但它不起作用。相反,输入进入函数后就变成了“d3L3T3”。

是否有正确的方法来计算“”字符串?或者是否有其他方法可以删除字符串中的“”而不是使用字符串方法?

最佳答案

正如评论中提到的,如果您有多个条件,那么您需要检查所有条件:

if S[0].isalpha() and S[2].isalpha() and S[4].isalpha() == False: 
...

不是你想要的。你需要这样写:

if S[0].isalpha() == True and S[2].isalpha() == True and S[4].isalpha() == False: 
...

作为另一个选项,您可以使用正则表达式匹配:

import re

def postalValidate(S):
S = S.replace(' ', '')
pattern = re.compile('^([a-zA-Z][0-9]){3}$')

if pattern.match(S):
return S.upper()
else:
return False


if __name__ == '__main__':
print(postalValidate('l3D1 z1 '))
print(postalValidate('11z'))
print(postalValidate('a1b2c3 '))
print(postalValidate('3 l D1 z1 '))
print(postalValidate('3 l D1 z1 b2 '))
print(postalValidate(''))
print(postalValidate(' '))
print(postalValidate(' L3 z0 V1 '))

此变体更灵活且更容易更改。

关于python - 关于 Python 中空 (' ' ) 字符串的字符串方法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48985875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com