【发布时间】:2021-10-01 07:35:26
【问题描述】:
我希望 Python 获取一个字符串并遍历它,打印多个变体,其中单个字母大写。像这样:
输入:
“你好世界”
输出:
“Hello world”、“hEllo world”、“heLlo world”等
这是我目前所拥有的:
string = "hello world".lower()
for x in range(0, len(string)):
new_string = string[:(x-1)].lower() + string[x].capitalize() + string[(x-1):].lower()
print(new_string)
但是,这段代码会吐出一些看起来很时髦的字符串:
hello worlHd
Ehello world
hLello world
etc.
我怀疑我的问题与我索引字符串的方式有关,但我不确定要更改什么。有什么想法吗?
【问题讨论】:
-
您的索引错误:
new_string = string[:x].lower() + string[x].upper() + string[x+1:].lower() -
这样的东西可以工作:[print(string[:(x-1)].lower() + string[x-1].capitalize() + string[(x):]。 lower()) for x in range(1, len(string)+1)]
-
当您尝试检查各个切片的值时发生了什么? (尝试使用
repr以便您可以看到字符串周围的引号,突出显示空字符串、空格等) -
我认为错误的代码是在您的第一个循环中,表达式: string[:(x-1)] 表示从零索引(包含)到最后一个索引(排除)= string[ 0 : -1)]