0

我需要一个程序,询问用户 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

我不确定你是否需要一份清单,有人知道如何解决这个问题吗?谢谢!

4

3 回答 3

1

一些提示:

  • 要测试一个字符串是否以另一个开头,您可以使用string.startswith().
  • 您的第一个输入不需要拆分,字符串是一个序列。
于 2012-09-06T11:13:11.303 回答
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为三个即可。如果要匹配字母的大小写,请删除lowerraw_input 上的调用和all.

于 2012-09-06T11:16:37.380 回答
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)])
于 2012-09-06T11:53:13.533 回答