Python if语句中的lower与islower方法

Python if语句中的lower与islower方法,python,Python,嗨,我是Python新手,这是我在这里的第一篇帖子。我正在学习Python教程,我有点困惑,这段代码执行得很好,我只是想知道为什么下面的代码可以工作: def translate(phrase): translation = "" for letter in phrase: if letter.lower() in "aeiou": if letter.isupper(): translation = tra

嗨,我是Python新手,这是我在这里的第一篇帖子。我正在学习Python教程,我有点困惑,这段代码执行得很好,我只是想知道为什么下面的代码可以工作:

def translate(phrase):
    translation = ""
    for letter in phrase:
        if letter.lower() in "aeiou":
            if letter.isupper():
                translation = translation + "Q"
            else:
                translation = translation + "q"
        else:
            translation = translation + letter
    return translation

print(translate(input("Enter phrase to translate: ")))
如果letter.lower按顺序将每个字母转换为小写,那么下一个If语句如何为letter.isupper返回任何内容

如果这个短语是“AaAa”,那么在检查letter.isupper之前,letter.lower()是否会先将其转换为AaAa,这意味着没有任何东西可以是isupper?然而,它仍然有效,AaAa返回QQ

另外,我在这里发布代码的格式正确吗?我只是粘贴了它并点击了括号按钮


谢谢lower方法'1仅返回小写字母(如果没有小写版本,则返回原始字符串);它不会改变字母本身

if letter.lower() in "aeiou":
                if letter.isupper():
                    translation = translation + "Q"
lower()将返回小写字符,您将检查它是否为元音。字母本身未更改,例如A将保留为A

>>> letter = 'A'
>>> letter
'A'
>>> letter.lower()
'a'
>>> letter
'A"
您要检查的下一行是否为大写,请使用isupper添加大写字母Q或小写字母Q

if letter.lower() in "aeiou":

别糊涂了,我会把你的密码说清楚的

请按照以下步骤操作:-

1.您的代码:

if letter.isupper():
在上面代码的第一行中,首先将字母(可以是大写或小写)转换为小写。然后检查字母是否在“aeiou”中,如果字母在“aeiou”中,则执行下一个if语句

  • 现在请注意,您在第一行中转换为小写的字母在第一行执行之前仍然是小写的,这意味着字母的原始大小写(输入时字母的大小写)的角色来自第二行,也意味着isupper()函数不会永久更改字母的大小写
  • 3.根据您的输入“AaAa”。首先,字母“A”将转换为“A”,并作为 程序的“aeiou”控件中有“a”将转到第二个“if”语句,在那里,您的字母是“a”(输入时的原始大小写),因此第三个语句的结果是“Q”,然后此过程对所有字母(“AaAa”)继续,您的输出是“QQQ”

    有关您的疑问的更多说明,请参考下面的代码,您将永远不会再陷入此问题中:-

        if letter.lower() in "aeiou":
            if letter.isupper():
                translation=translation + "Q"
            else:
                translation=translation + "q"
    
    输出:

    a

    A

    a

    a

    a

    A

    a

    a


    您的代码格式正确。您可以用更好的方式发布问题,但发布的方式也很好。

    如果“aeiou:”
    中的letter.lower()查找元音,并且只返回True或False。只要不将
    letter.lower()
    赋值给
    letter
    就可以用
    如果“aeiouAEIOU:”
    中的letter返回一个新字符串,并且不修改原有的字符串,就可以将该语句细分为
    。字符串在Python中是不可变的。谢谢您的帮助谢谢您的帮助谢谢您的帮助
    
    s="AaAa"
    for letter in s:
        print(letter.lower())
        print(letter)