将字符串添加到空字符串

时间:2015-11-09 19:06:21

标签: python python-3.x

我的程序有问题,应该通过使用一个字符串的第一个单词和一个没有第一个单词打印字符串的函数来反转字符串。

def first_word(string):
    first_space_pos = string.find(" ")
    word = string[0:first_space_pos]
    print(word)

def last_words(string):
    first_space_pos = string.find(" ")
    words = string[first_space_pos+1:]
    print(words)

def reverse(string):
    words = string.count(" ") +1
    count = 1
    string_reversed = ""
    while count < words:
        string_reversed = first_word(string) + str(" ") + string_reversed
        string = last_words(string)
        count += 1
    print(string_reversed)

我得到的错误是:

TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

以及这一行:

string_reversed = first_word(string) + str(" ") + string_reversed

感谢任何帮助。感谢。

4 个答案:

答案 0 :(得分:2)

first_word不会返回任何内容,因此会生成None值,并且不能将其用作带字符串的+操作数。您可能想要返回word

答案 1 :(得分:0)

您已混淆打印返回打印将值转储到输出(您的屏幕),但不会更改内存中的任何数据,并且不会对该值进行任何进一步操作。 返回将其作为函数值发回。

正如编译器警告告诉我的那样,你的函数都没有向调用者返回任何值。因此,你得到&#34;无&#34;作为值,你的调用程序burfs。用返回替换所有这些终端打印语句,您的代码运行良好:

def first_word(string):
    first_space_pos = string.find(" ")
    word = string[0:first_space_pos]
    return word

def last_words(string):
    first_space_pos = string.find(" ")
    words = string[first_space_pos+1:]
    return words

def reverse(string):
    words = string.count(" ") +1
    count = 1
    string_reversed = ""
    while count < words:
        string_reversed = first_word(string) + str(" ") + string_reversed
        string = last_words(string)
        count += 1
    return string_reversed

print reverse("Now is the time for all good parties to come to the aid of man.")

输出:

of aid the to come to parties good all for time the is Now 

答案 2 :(得分:0)

您将print的功能与return混淆。

print是一个python函数,它会将括号中的任何内容打印到stdout或另一个输出流(如果明确指定)。

return是将您想要的内容作为函数值发送回来的语句。

IE:

>>> def foo():
    print('foo')


>>> def bar():
    return 'bar'

>>> u = foo()
foo
>>> u
>>> type(u)
<class 'NoneType'>
>>> u = bar()
>>> u
'bar'
>>> type(u)
<class 'str'>

另外,你可以用python str[::-1]

做你想做的事
>>> def stringReverse(s):
    print(' '.join(s.split()[::-1]))


>>> stringReverse('Hello this is how to reverse a string')
string a reverse to how is this Hello

这只是一个建议,但是你可能会尝试以特定的方式进行字符串反转。正如Prune所说,如果用print

替换return,你的功能就可以正常工作

答案 3 :(得分:0)

您的两种方法first_word()&amp; last_words()不返回任何内容,因此会创建一个无法使用字符串添加的空值。使用return代替print,这样会很好。