.upper 在 python 中不工作
.upper not working in python
我目前有这个代码
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 行似乎没有效果,谁能告诉我为什么?
提前谢谢你,如果已经有答案,请告诉我,我没有标记为重复原因,而是搜索了一个好小时
.upper()
和.lower()
函数不修改原来的str
。每 the documentation,
对于.upper()
:
str.upper()
Return a copy of the string with all the cased characters converted to uppercase.
对于.lower()
:
str.lower()
Return a copy of the string with all the cased characters converted to lowercase.
因此,如果您想要分别显示大写和小写字符,则需要打印 lines[o][p][u].upper()
和 lines[o][p][u].lower()
而不是 lines[o][p][u]
。但是,如果我从您的代码示例中正确理解了您的 objective,那么您似乎正试图从字符串输入中交替使用大写和小写字符。你可以使用 list comprehension 和类似下面的东西更容易地做到这一点:
num_lines = int(input("How many words do you want to enter?: "))
originals = []
alternating = []
for i in range(num_lines):
line = input("{}. Enter a word: ".format(i + 1))
originals.append(line)
alternating.append("".join([x.lower() if j % 2 == 0 else x.upper() for j, x in enumerate(line)]))
print("Originals:\t", originals)
print("Alternating:\t", alternating)
使用以下示例输出:
How many words do you want to enter?: 3
1. Enter a word: Spam
2. Enter a word: ham
3. Enter a word: EGGS
Originals: ['Spam', 'ham', 'EGGS']
Alternating: ['sPaM', 'hAm', 'eGgS']
我目前有这个代码
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 行似乎没有效果,谁能告诉我为什么?
提前谢谢你,如果已经有答案,请告诉我,我没有标记为重复原因,而是搜索了一个好小时
.upper()
和.lower()
函数不修改原来的str
。每 the documentation,
对于.upper()
:
str.upper()
Return a copy of the string with all the cased characters converted to uppercase.
对于.lower()
:
str.lower()
Return a copy of the string with all the cased characters converted to lowercase.
因此,如果您想要分别显示大写和小写字符,则需要打印 lines[o][p][u].upper()
和 lines[o][p][u].lower()
而不是 lines[o][p][u]
。但是,如果我从您的代码示例中正确理解了您的 objective,那么您似乎正试图从字符串输入中交替使用大写和小写字符。你可以使用 list comprehension 和类似下面的东西更容易地做到这一点:
num_lines = int(input("How many words do you want to enter?: "))
originals = []
alternating = []
for i in range(num_lines):
line = input("{}. Enter a word: ".format(i + 1))
originals.append(line)
alternating.append("".join([x.lower() if j % 2 == 0 else x.upper() for j, x in enumerate(line)]))
print("Originals:\t", originals)
print("Alternating:\t", alternating)
使用以下示例输出:
How many words do you want to enter?: 3
1. Enter a word: Spam
2. Enter a word: ham
3. Enter a word: EGGS
Originals: ['Spam', 'ham', 'EGGS']
Alternating: ['sPaM', 'hAm', 'eGgS']