如何从列表中删除小写字母并将其反转
How to delete lower case from a list and reverse it
目的是试图反转消息,删除所有以小写字母开头的字符串,最后将所有字符串都变成小写。
这是我的代码:
msg = input('code: ')
msg = msg.split()
msg = list(reversed(msg))
for i in msg:
if i[0] == i[0].lower:
del msg[i]
msg = ' '.join(msg)
msg = msg.lower()
print(msg)
举个例子
BaSe fOO ThE AttAcK
然后会变成
attack the base
非常感谢你们!!!!!!!!!!所以我回去编辑了我的代码:
new_msg = []
msg = input('code: ')
msg = msg.split()
msg = list(reversed(msg))
for word in msg:
if not word[0].islower():
new_msg.append(word.lower())
new_msg = ' '.join(new_msg)
print("says:",new_msg)
我回去标记它,但它说你不能有标点符号!是的,我想我又需要帮助了,我该如何摆脱它们?
new_msg = []
msg = msg.split()
for word in msg: #For every word in the string
if not word[0].islower(): #if it starts with anything other than lowercase
new_msg.append(word.lower()) #add to new list
new_msg = ' '.join(new_msg[::-1]) #Reverse order of list and make into string
" ".join([word.lower() for word in reversed(msg.split()) if not word[0].islower()])
这就是为什么您的代码 不起作用 ,至少:
>>> i = 'fOO'
>>> i[0] == i[0].lower # huh?
False
>>> i[0].lower # oh!
<built-in method lower of str object at 0x00249F40>
>>> i[0].lower() # we forgot to *call* it
'f'
>>> i[0] == i[0].lower() # perfect!
True
您正在将字符串与方法对象进行比较——这就是永远不会满足条件的原因。
如果你修复了这个错误,它仍然不会工作;您正在删除没有任何意义的 msg['fOO']
!尝试使用 enumerate()
获取索引以及列表中的字符串。
(然后还是不行。你能找出原因吗?)
这看起来有点吓人,但我会解释一下。
s = "BaSe fOO ThE AttAcK"
print ' '.join(reversed([word.lower() for word in s.split(' ') if not word[0].islower()]))
我在这里所做的是将 s 拆分为单个 space ' '
,然后创建一个包含任何非单个 ' '
的列表。然后我遍历 "words" 的列表并使用内置的 lower 方法将每个单词转换为较低的,只有当单词的第一个字符(我们通过调用第 0 个索引获得)不低于时。最后我们使用 join 方法加入我们创建的列表。
编辑:我忘了反转列表。
string = raw_input().split()
string2 = []
for i in range(len(string)):
if not string[i].[0].islower():
string2.insert(0,string[i].lower())
print ' '.join(string2)
我建议您在任何情况下都不要删除 list/Dict 迭代中的任何元素。
如果你这样做,那就错了。
像那样:
sMsg="BaSe fOO The AttAck"
lstMsg=sMsg.split(" ")
for i in xrange(len(lstMsg)):
if lstMsg[i][0].islower():
del lstMsg[i]
目的是试图反转消息,删除所有以小写字母开头的字符串,最后将所有字符串都变成小写。
这是我的代码:
msg = input('code: ')
msg = msg.split()
msg = list(reversed(msg))
for i in msg:
if i[0] == i[0].lower:
del msg[i]
msg = ' '.join(msg)
msg = msg.lower()
print(msg)
举个例子
BaSe fOO ThE AttAcK
然后会变成
attack the base
非常感谢你们!!!!!!!!!!所以我回去编辑了我的代码:
new_msg = []
msg = input('code: ')
msg = msg.split()
msg = list(reversed(msg))
for word in msg:
if not word[0].islower():
new_msg.append(word.lower())
new_msg = ' '.join(new_msg)
print("says:",new_msg)
我回去标记它,但它说你不能有标点符号!是的,我想我又需要帮助了,我该如何摆脱它们?
new_msg = []
msg = msg.split()
for word in msg: #For every word in the string
if not word[0].islower(): #if it starts with anything other than lowercase
new_msg.append(word.lower()) #add to new list
new_msg = ' '.join(new_msg[::-1]) #Reverse order of list and make into string
" ".join([word.lower() for word in reversed(msg.split()) if not word[0].islower()])
这就是为什么您的代码 不起作用 ,至少:
>>> i = 'fOO'
>>> i[0] == i[0].lower # huh?
False
>>> i[0].lower # oh!
<built-in method lower of str object at 0x00249F40>
>>> i[0].lower() # we forgot to *call* it
'f'
>>> i[0] == i[0].lower() # perfect!
True
您正在将字符串与方法对象进行比较——这就是永远不会满足条件的原因。
如果你修复了这个错误,它仍然不会工作;您正在删除没有任何意义的 msg['fOO']
!尝试使用 enumerate()
获取索引以及列表中的字符串。
(然后还是不行。你能找出原因吗?)
这看起来有点吓人,但我会解释一下。
s = "BaSe fOO ThE AttAcK"
print ' '.join(reversed([word.lower() for word in s.split(' ') if not word[0].islower()]))
我在这里所做的是将 s 拆分为单个 space ' '
,然后创建一个包含任何非单个 ' '
的列表。然后我遍历 "words" 的列表并使用内置的 lower 方法将每个单词转换为较低的,只有当单词的第一个字符(我们通过调用第 0 个索引获得)不低于时。最后我们使用 join 方法加入我们创建的列表。
编辑:我忘了反转列表。
string = raw_input().split()
string2 = []
for i in range(len(string)):
if not string[i].[0].islower():
string2.insert(0,string[i].lower())
print ' '.join(string2)
我建议您在任何情况下都不要删除 list/Dict 迭代中的任何元素。 如果你这样做,那就错了。
像那样:
sMsg="BaSe fOO The AttAck"
lstMsg=sMsg.split(" ")
for i in xrange(len(lstMsg)):
if lstMsg[i][0].islower():
del lstMsg[i]