我需要一个程序,询问用户3个字母,然后询问用户一个字符串,然后打印出字符串中以三个字母开头的所有单词......例如
Enter 3 letters: AMD
Enter text: Advanced Micro Devices is a brand for all microsoft desktops
word: Advanced Micro Devices
word: all microsoft desktops
这很简单。我是新手,无法弄清楚我的代码目前是什么......
ipt1 = raw_input("Three letters: ") ## Asks for three letters
ipt2 = raw_input("Text: ") ## Asks for text
ipt1_split = ipt1.split() ## Converts three letters to list
ipt2_split = ipt2.split() ## Converts text to list
我不确定你是否需要清单,有谁知道如何解决这个问题?谢谢!
答案 0 :(得分:1)
一些提示:
string.startswith()
。答案 1 :(得分:1)
我会做这样的事情:
letters = raw_input("letters: ").lower()
n = len(letters)
words = raw_input("text: ").split()
words_lc = [x.lower() for x in words] #lowercase copy for case-insensitive check
for x in range(len(words) - n + 1):
if all((words_lc[x+n].startswith(letters[n]) for n in range(n))):
print "match: ", ' '.join(words[x:x+n])
在这种情况下,字母数是动态的,如果你想将它固定为三个,只需将n
设置为3。如果您想匹配字母大小写,请删除raw_input上的lower
次调用以及all
中的比较。
答案 2 :(得分:0)
试试这个:
letters = "AMD"
text = "Advanced Micro Devices is a brand for all microsoft desktops"
words = text.split()
for i in xrange(len(words)-len(letters)+1):
if "".join(map(lambda x: x[0], words[i:i+len(letters)])).lower() == letters.lower():
print "word:", ".join(words[i:i+len(letters)])