【问题标题】:Need to create a program that prints out words starting with a particular letter需要创建一个程序来打印以特定字母开头的单词
【发布时间】:2012-08-31 04:36:08
【问题描述】:

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

我不确定您是否需要列表,有人知道如何解决这个问题吗?谢谢!

【问题讨论】:

  • 字母的split 是错误的(除非它们之间有空格),只需使用 list() 将字符串转换为字符列表。
  • 谢谢,已解决,但仍不知道如何处理:\。正在处理它的atm
  • 忽略该评论,实际上在这种情况下将其保留为字符串就足够了,因为字符串可以像列表一样被索引。

标签: python arrays input for-loop while-loop


【解决方案1】:

一些提示:

  • 要测试一个字符串是否以另一个开头,您可以使用string.startswith()
  • 您的第一个输入不需要拆分,一个字符串就是一个序列。

【讨论】:

    【解决方案2】:

    我会这样做:

    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 设置为三个。如果要匹配字母的大小写,请删除 raw_input 上的 lower 调用和 all 中的比较。

    【讨论】:

    • 谢谢!完美地工作。在接下来的几周里我会经常使用这个,谢谢:)
    【解决方案3】:

    试试这个:

    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)])
    

    【讨论】:

      猜你喜欢
      • 2017-04-13
      • 2018-05-04
      • 2023-02-21
      • 2015-07-14
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-05
      相关资源
      最近更新 更多