python len方法不好

2024-04-23 10:35:07 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我想做麦当劳挑战。给定带有参数“name”的函数返回它的MacDonald版本,第一个和第四个字母大写。 如果我在没有任何If-else的情况下尝试代码,并且只传入“mac”一个错误发生了。所以呢我说如果名字的长度少于5个字母,就把名字也打印出来短。否则,做麦当劳版。 但是,由于某些原因,len()在这里给出了一个错误。你知道吗

def old_macdonald(name):
    firstLetter = name[0].capitalize()
    fourthLetter = name[3].capitalize()
    inBetween = name[1:3]
    last = name[4:]
    newName = firstLetter + inBetween + fourthLetter + last
    if len(newName) < 4:
        print("name is too short.")
    else:
        print(newName)
old_macdonald("mac")

Tags: namelenmac错误字母名字elseold
3条回答

按照Jens的建议,我将if检查放在其他所有检查之上(因为如果名称太短,您希望终止函数),并在if检查中返回以中断和结束函数。你知道吗

def old_macdonald(name):
    if len(name)< 4:
        print("name is too short.")
        return
    firstLetter = name[0].capitalize()
    fourthLetter = name[3].capitalize()
    inBetween = name[1:3]
    last = name[4:]
    newName = firstLetter + inBetween + fourthLetter + last
    print(newName)

old_macdonald("mac")
old_macdonald("macdonald")

这是结果 enter image description here

我不认为len会抛出异常,但就像没有if条件的版本一样,字符串操作也会抛出异常。你知道吗

在代码的else部分执行字符串操作以避免异常。你知道吗

不管怎样,您仍然在尝试执行相同的操作,len并没有向您抛出错误,上面的代码部分给出了错误。你知道吗

只要将代码移到函数的else部分就可以了。您需要这样做的原因是,您需要先检查,然后执行,而不是先执行,然后检查。你知道吗

相关问题 更多 >