我写了一个程序,用户可以在其中输入任何字符串。它应该:
这是我写的代码:
s=raw_input()
k=s.lower()
listaa=[]
for x in k:
listaa.append(x)
if x=='a':
listaa.remove('a')
if x=='o':
listaa.remove('o')
if x=='y':
listaa.remove('y')
if x=='e':
listaa.remove('e')
if x=='u':
listaa.remove('u')
if x=='i':
listaa.remove('i')
for a in listaa:
print '.%s'%(a),
此代码工作正常,但例如,如果我使用输入tour
,则输出为.t .r
。虽然这是对的,但这并不是我想要的。我想删除它们之间的空格。我希望输出看起来像:.t.r
我该怎么做?
答案 0 :(得分:2)
如果在打印后放置逗号,则会为print语句添加空格。要不打印空格或换行符,请使用sys.stdout.write()
固定代码:
import sys
s=raw_input()
k=s.lower()
listaa=[]
for x in k:
listaa.append(x)
if x=='a':
listaa.remove('a')
if x=='o':
listaa.remove('o')
if x=='y':
listaa.remove('y')
if x=='e':
listaa.remove('e')
if x=='u':
listaa.remove('u')
if x=='i':
listaa.remove('i')
for a in listaa:
sys.stdout.write('.%s' % a)
注意:您需要添加import sys
语句才能使用sys.stdout.write
答案 1 :(得分:1)
在python中使用print elem,
使用空格的分隔符,这意味着它会在每次打印调用后自动打印一个空格。通过制作单个字符串只需调用print
一次就可以避免这种情况:
print ''.join(listaa)
str.join(list)
是一个内置的字符串方法,它将list
的元素与str
连接在一起。问题在于它在每个辅音之前都没有一段时间。
您的逻辑也可以更改为删除if语句。最好的方法是将你的逻辑改为add if not in
种方式:
s=raw_input()
k=s.lower()
listaa=[]
for x in k:
if x not in ['a','e','i','o','u']: listaa.append('.'+x.lower())
所有这一切都是检查x是否是元音,如果没有添加由句点组成的字符串x
你也可以在一行中完成这一切:
print ''.join('.'+x.lower() for x in raw_input() if x not in 'aeiou')
答案 2 :(得分:1)
避免使用remove
,因为它会删除第一次出现的项目。
相反,在追加之前确定需要追加的内容:
if x in 'bcdfghjklmnpqrstvwxyz':
listaa.append('.')
listaa.append(x)
elif x not in 'aeiou':
# If x is neither a vowel nor a consonant, it is appended.
listaa.append(x)
此外,最后将列表转换回字符串会很好:
result = ''.join(listaa)
print result
答案 3 :(得分:1)
正则表达式(包含在re
库中)旨在完成这类工作。
import re
import string
alphabet = string.ascii_lowercase
vowels = 'aeiou'
consonants = "".join(set(alphabet)-(set(vowels)))
vowelre = re.compile("["+vowels+"]", re.IGNORECASE)
consonantre = re.compile("(["+consonants+"]){1}", re.IGNORECASE)
text = "Mary had a little lamb The butcher killed it DEAD"
print(vowelre.sub("", text))
print(consonantre.sub(".", text))
我注意到您已在查询中添加了Python 2.7标记。如果您使用的是2.7,那么我建议您习惯使用Python 3样式的打印功能。要启用此功能,您可能需要一行
from __future__ import print_function
代码。
tim@merlin:~$ python retest.py
Mry hd lttl lmb Th btchr klld t DD
.a.. .a. a .i...e .a.. ..e .u...e. .i..e. i. .EA.
HTH