gpt4 book ai didi

python - 另一个大写字符串解决方案的每个奇数字符

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:20 28 4
gpt4 key购买 nike

我刚开始学习 Python 并为自己创建了一些我正在努力解决的任务...

所以,我正在学习使用字符串(通过索引访问字符串、更改等)的章节。

我的任务是 - 将字符串中的每个奇数字符大写。我在这里看到了解决方案:Capitalise every other letter in a string in Python?

但我不喜欢它...想分段解决这个问题。所以我生成的是以下代码:

T = 'somesampletexthere'  
R=""

for i in range(0, len(T[1::2])):
R+=T[::2][i].upper()+T[1::2][i].lower()

print R

当有偶数个字符时,此代码非常有效,例如 TESTTEXT,但当数字为奇数时(如示例中的此处),它将跳过最后一个字符(在本例中为 E)

这是因为范围是直到len(T[1::2]))(偶数字符的长度)但是如果我尝试奇数字符的长度len( T[::2])) 我会得到错误:

IndexError: string index out of range

从逻辑上讲,因为奇数字符的数量在 1 时总是更大(在文本字符数为奇数的情况下)。

所以,我的问题是 - 如何抑制错误?所以如果索引超出给定字符串的范围,Python 只会返回 null 或其他东西?

或者使用切片的任务的任何其他解决方案?

最佳答案

你可以只使用 enumerate并使用三元运算符测试奇数和偶数索引。然后使用 join join 字符串:

>>> T = 'somesampletexthere'
>>> ''.join(x.upper() if i%2 else x.lower() for i, x in enumerate(T))
'sOmEsAmPlEtExThErE'

您可以使用 itertools.count 提供的外部计数器对象来处理空格:

>>> from itertools import count
>>> c = count()
>>> T = 'some sample text here'
>>> ''.join(x if x.isspace() else (x.upper() if next(c)%2 else x.lower()) for x in T)
'sOmE sAmPlE tExT hErE'

关于python - 另一个大写字符串解决方案的每个奇数字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40304506/

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