添加int和str

时间:2011-10-04 13:45:09

标签: python

你好我正在阅读这本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的类型,它以int形式出现。

3 个答案:

答案 0 :(得分:6)

你需要括号:

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

您的代码评估为:

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

这不起作用,因为你不能从字符串中减去一个int。

答案 1 :(得分:5)

正如马克所说,你需要围绕减法做括号。

此外,您正在传递的参数中执行right_justify的工作。该功能只是打印出你现在提供的内容。

你应该只传递一个字符串s,然后让right_justify对字符串进行处理(即计算出它的长度,然后在它之前添加适当数量的空格),然后再打印它。

类似的东西:

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

right_justify('Allen')

答案 2 :(得分:0)

  

def right_justify(s):   。 print(''*(70-len(s))+ s)   。   right_justify( '艾伦')                                                                    艾伦

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