-6

问题 1:编写一个名为“Marquee”的函数,它接受一个字符串,并将每个单词的第一个字母大写。
问题 2:编写一个完成问题 2 中相同操作的类。我对此并不陌生。如果有人可以指导我完成此操作,将不胜感激。

这是我到目前为止

def Marquee (str.capitalize())
    str="this is string example!"
print str.capitalize()
4

3 回答 3

2

好的,这是一个开始。. .

例如,如果我们使用一个词,比如说。. .

word1 = "this"

所以你知道调用 word1.capitalize(),你会得到 . . .

This

这就是你如何为一个单词做的,现在你必须将它应用于一个句子。做到这一点的方法是你可能不得不使用基于空格的分割函数来分解句子,比如

str.split(" ")

这将返回一个单词列表。遍历列表并创建一个新字符串以将单词连接成一个新句子。例如,你能预测这段代码的输出吗?

word1 = "this"
word2 = "is"
word3 = "string"
sentence = (word1.capitalize()+ " " + word2.capitalize() + " " + word3.capitalize())
print sentence

我不知道任何python,但我猜它可能看起来像这样。. .

newSentence = ""
for word in str.split(" ")
    newSentence += (word.capitalized() + " ")
print newSentence

现在我们必须将它放在一个函数中,以允许我们输入任何句子并获取它的大写版本。所以我们需要知道如何定义一个函数。. . 这是基本思想,我们首先使用def声明一个,然后是函数的名称,然后是参数def name (paramters)。如果我们没有参数,我们将其留空并使用括号def name ()。我们通过返回来结束函数定义。它看起来像这样。. .

def Marquee(str):
. . . .
Insert python code to capitalize beginning of every word.
. . . .
return

str 是用户调用的输入,所以如果我说

aSentence = "this is string example"
print Marquee(aSentence) 

我应该得到

This Is String Example

你能弄清楚剩下的吗?

于 2012-12-18T00:42:50.323 回答
1
def Marquee (the_string):
    return the_string.title()

你这样调用函数

>>> Marquee("this is string example!")
'This Is String Example!'

不确定问题 2 的要求是什么,也许他们希望您将 str 子类化

class Question2(str):
    marquee = str.title

print(Question2("this is string example!").marquee())
于 2012-12-18T01:42:29.713 回答
1
Marquee = str.title

或者,为了向后兼容旧版本的 Python:

import string
Marquee = string.capwords

对于做同样事情的类:

class Mar:
    quee = str.title
Marquee = Mar.quee

或者,稍微严重一点:

class MarqueeClass(object):
    def __call__(self, s):
        return s.title()
Marquee = MarqueeClass()

实际上,我注意到问题 2 实际上是:

问题 2:编写一个完成问题 2 中相同动作的类。

这是一个循环定义,或者可能是一个没有基本情况的递归定义。解释这一点的一种方法是任何事情都是允许的。但我认为更严格的解释是,任何实例化类的尝试都会导致无限递归:

class MarqueeClass(object):
    def __init__(self):
        self.__init__()

另一方面,“问题 2”也有可能是完成操作的上下文。虽然这不是一个有效的标识符名称,但您仍然可以间接查找它。例如:

context = globals()['Question 2']
with context:
    Marquee = str.title

我还要添加一个注释,提醒老师Marquee根据 PEP 8 不是一个好的函数名称,以确保老师知道你是个聪明人,而他是个笨蛋。:)

于 2012-12-18T01:44:07.353 回答