如何让程序按顺序打印句子中的单词数和每个单词

时间:2014-03-28 22:53:31

标签: python string printing character

我需要打印用户指定的句子中有多少个字符,打印用户指定和打印每个单词的句子中有多少个单词,单词中的字母数,以及第一个和最后一个字母在这个词中。可以这样做吗?

3 个答案:

答案 0 :(得分:2)

我希望您花时间了解下面代码中的内容,建议您阅读这些资源。

http://docs.python.org/3/library/re.html

http://docs.python.org/3/library/functions.html#len

http://docs.python.org/3/library/functions.html

http://docs.python.org/3/library/stdtypes.html#str.split

import re


def count_letter(word):
    """(str) -> int

    Return the number of letters in a word.

    >>> count_letter('cat')
    3
    >>> count_letter('cat1')
    3

    """
    return len(re.findall('[a-zA-Z]', word))


if __name__ == '__main__':
    sentence = input('Please enter your sentence: ')
    words = re.sub("[^\w]", " ",  sentence).split()

    # The number of characters in the sentence.
    print(len(sentence))
    # The number of words in the sentence.
    print(len(words))
    # Print all the words in the sentence, the number of letters, the first
    # and last letter.
    for i in words:
        print(i, count_letter(i), i[0], i[-1])

Please enter your sentence: hello user
10
2
hello 5 h o
user 4 u r

答案 1 :(得分:1)

请阅读Python的字符串文档,它是自我解释的。以下是对不同部分的简短说明以及一些注释。

我们知道句子由单词组成,每个单词由字母组成。我们首先要做的是将split句子翻译成单词。此列表中的每个条目都是一个单词,每个单词都以一系列字符的形式存储,我们可以获得每个单词。

sentence = "This is my sentence"

# split the sentence
words = sentence.split()
# use len() to obtain the number of elements (words) in the list words
print('There are {} words in the given sentence'.format(len(words)))
# go through each word
for word in words:
    # len() counts the number of elements again,
    # but this time it's the chars in the string 
    print('There are {} characters in the word "{}"'.format(len(word), word))

    # python is a 0-based language, in the sense that the first element is indexed at 0
    # you can go backward in an array too using negative indices.
    #
    # However, notice that the last element is at -1 and second to last is -2,
    # it can be a little bit confusing at the beginning when we know that the second
    # element from the start is indexed at 1 and not 2.
    print('The first being "{}" and the last "{}"'.format(word[0], word[-1]))

答案 2 :(得分:1)

我们不会在堆栈溢出时为你做功课......但我会让你开始。

您需要的最重要的方法是这两个中的一个(取决于python的版本):

  • Python3.X - input([prompt]),..如果提示参数存在,则写入 到没有尾随换行符的标准输出。那个功能呢 从输入中读取一行,将其转换为字符串(剥离一个 尾随换行符),并返回。读取EOF时,EOFError为 提高。 http://docs.python.org/3/library/functions.html#input
  • Python2.X raw_input([prompt]),...如果提示参数是 目前,它被写入标准输出而没有尾随换行符。 然后该函数从输入中读取一行,将其转换为字符串 (剥离尾随换行符),然后返回。读取EOF时 提出了EOFError。 http://docs.python.org/2.7/library/functions.html#raw_input

您可以像

一样使用它们
>>> my_sentance = raw_input("Do you want us to do your homework?\n")
Do you want us to do your homework?
yes
>>> my_sentance
'yes'

正如您所看到的,写入的文本在my_sentance变量

中被删除

要获取字符串中的字符数,您需要了解字符串实际上只是一个列表!因此,如果您想知道可以使用的字符数量:

我会让你弄清楚如何使用它。

最后,你需要为字符串使用内置函数:

  • str.split([sep[, maxsplit]]),...返回中的单词列表 string,使用sep作为分隔符字符串。如果给出maxsplit,at 大多数maxsplit分裂已完成(因此,列表最多将有 maxsplit + 1个元素)。如果没有指定maxsplit或-1,那么那里 对分割数量没有限制(所有可能的分割都是如此)。 http://docs.python.org/2/library/stdtypes.html#str.split