繁体   English   中英

试图找出为什么某些输出不起作用

[英]Trying to figure out why some of the output isn't working

完整的初学者在这里。 我试图让句子中的每个字母在大写和小写之间交替。 我想知道为什么在我的代码输出中,整个“狐狸”和“狗”都保持小写? 我想出了 1 或 2,但我不明白为什么这两个词中的所有 3。

text = input('Enter a sentence: ')

def sponge(t):
    new = ''
    for i in t:
        if t.index(i) % 2 == 0:
            new += (i).lower()
        elif t.index(i) % 2 == 1:
            new += (i).upper()
    return new

print(sponge(text))

当我输入 'the quick brown fox jumps over the lazy dog' 时,它会这样做。 此外,当我输入带有 2 个 E 或 2 个 O 的内容时,即使它们彼此相邻,它们也会大写。

我也知道有更简单的方法可以做到这一点,但我的学习还没有那么远,所以我正在尝试用我目前所知道的而不是模块和所有这些来做到这一点。 感谢您的时间。

不要使用t.index(i) 这将返回i在字符串中第一次出现的位置。 如果您有重复的字母,您将在决定如何处理所有重复时使用第一个字母的位置。

使用enumerate()同时获取字母及其索引。

def sponge(t):
    new = ''
    for index, letter in enumerate(t):
        if index % 2 == 0:
            new += letter.lower()
        else:
            new += letter.upper()
    return new

如果没有enumerate您可以使用range(len(t))然后访问t[index]

def sponge(t):
    new = ''
    for index in range(len(t)):
        if index % 2 == 0:
            new += t[index].lower()
        else:
            new += t[index].upper()
    return new

或者您可以使用单独的变量来跟踪它是偶数索引还是奇数索引。

def sponge(t):
    new = ''
    even = True
    for letter in t:
        if even:
            new += letter.lower()
        else:
            new += letter.upper()
        even = not even

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM