[英]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.