【发布时间】:2017-10-31 01:23:55
【问题描述】:
我目前有这个代码
num_lines = int(input())
lines = []
tempy = ''
ctr = 1
abc = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'
}
for i in range(0, num_lines):
tempy = input()
lines.append([])
lines[i].append(tempy)
for o in range(0, num_lines):
for p in range(0, len(lines[o])):
for u in range(0, len(lines[o][p])):
if lines[o][p][u] in abc:
lines = str(lines)
if ctr % 2 == 0:
print(lines[o][p][u])
lines[o][p][u].upper()
else:
print(lines[o][p][u])
lines[o][p][u].lower()
ctr += 1
print(lines)
但是 .upper 行似乎没有效果,谁能告诉我为什么?
提前谢谢你,如果已经有答案,请告诉我,我没有标记为重复的原因,而是搜索了一个好小时
【问题讨论】:
-
我不知道你想用你的索引做什么......你说的
lines[o][p][u]是什么意思?没有三个嵌套列表? -
你实际上想用这段代码完成什么?
-
请将您的程序缩减为仍能显示错误的最短程序。如果您的问题是关于
.upper(),那么该演示程序应该是大约三行。请参阅minimal reproducible example 了解更多信息。 -
我怀疑你的问题可以这样证明:
s = 'abcdef'/s.upper()/print(s),预期输出ABCDEF,实际输出abcdef。是这样吗? -
字符串是不可变的。您必须将返回的值从
upper()分配给一个变量,它不会被原地更改。所以不是lines[o][p][u].upper()而是lines[o][p][u] = lines[o][p][u].upper()。您的示例代码对于您要显示的问题来说太复杂了。你可以做一个比这更简单的例子。