python函数和类

时间:2012-12-18 00:18:15

标签: python python-3.x

问题1:编写一个名为'Marquee'的函数,它接受一个字符串,并将每个单词的第一个字母大写。
问题2:编写一个在问题2中完成相同操作的类。 我是新来的。如果有人能指导我完成这件事,我们将不胜感激。

这是我到目前为止

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

3 个答案:

答案 0 :(得分: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 然后使用函数的 name 来声明一个,然后使用参数 def name (paramters)即可。如果我们没有参数,我们将其留空,并带有paranthese def name()。我们通过说return来结束函数定义。它看起来像这样。 。

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

你可以弄清楚剩下的吗?

答案 1 :(得分: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())

答案 2 :(得分: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不是一个好的功能名称,以确保老师知道你是个聪明人,而且他是个笨蛋。 :)