整型与字符串相加

1 投票
3 回答
737 浏览
提问于 2025-04-17 03:39

你好,我正在看一本关于Python的书,其中有一个练习题是:

写一个名为right_justify的函数,这个函数接收一个字符串s作为参数,并打印这个字符串,前面加上足够的空格,使得字符串的最后一个字母在显示的第70列。

好的,我有以下代码,它打印了70个空格和字符串'allen'

def right_justify(s):
    print s
right_justify(' ' * 70 + 'Allen')

但是当我尝试从字符串'Allen'中减去空格的数量时

sub = len('allen')
def right_justify(s):
    print s
right_justify(' ' * 70 - sub + 'Allen')

我得到了:

"不支持的操作数类型:'str'和'int'"

为什么在没有sub变量的情况下可以工作,而有了它就不行呢?我检查过sub的类型,它是一个整数。

3 个回答

0

这个代码定义了一个叫做 `right_justify` 的函数。它的作用是把传入的字符串(比如名字)放到一行的右边,前面加上空格。具体来说,代码里用 `print` 函数来输出结果。这里的 `70-len(s)` 是在计算需要多少个空格,`len(s)` 是获取字符串的长度。然后用 `' '*(70-len(s))` 生成对应数量的空格,最后把这些空格和字符串 `s` 拼在一起,输出到屏幕上。

例如,当你调用 `right_justify('allen')` 时,它会在屏幕上显示出 'allen',前面加上足够的空格,让它对齐到右边。

http://en.wikibooks.org/wiki/Think_Python/Answers#Exercise_3.3

5

正如Mark所说,你需要在减法运算周围加上括号。

另外,你在传递给函数的参数中已经做了右对齐的工作。这个函数其实只是把你给它的内容打印出来而已。

你应该只传递一个字符串s,让right_justify函数来处理这个字符串(也就是说,先计算它的长度,然后在它前面加上适当数量的空格)再进行打印。

可以这样做:

def right_justify(s):
    sub = len(s)
    new_s = ' ' * (70 - sub) + s 
    print new_s

right_justify('Allen')
6

你需要加上括号:

' ' * (70 - sub) + 'Allen'

你的代码被计算成:

((' ' * 70) - sub) + 'Allen'

这样是不行的,因为你不能从一个字符串中减去一个整数。

撰写回答