你好,我正在读这本蟒蛇书,其中一个练习说:
编写一个名为right_justify的函数,该函数将名为s的字符串作为参数,并打印具有足够前导空格的字符串,以便字符串的最后一个字母位于显示的第70列.
好吧所以我有以下代码打印70个空格和字符串'allen'
def right_justify(s):
print s
right_justify(' ' * 70 + 'Allen')
Run Code Online (Sandbox Code Playgroud)
但当我试图从字符串'Allen'中减去空格数
sub = len('allen')
def right_justify(s):
print s
right_justify(' ' * 70 - sub + 'Allen')
Run Code Online (Sandbox Code Playgroud)
我得到:
" - str'和'int'的"不支持的操作数类型"
为什么没有子变量就可以工作呢?我检查了sub的类型,它以int形式出现.
你需要括号:
' ' * (70 - sub) + 'Allen'
Run Code Online (Sandbox Code Playgroud)
您的代码评估为:
((' ' * 70) - sub) + 'Allen'
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为你不能从字符串中减去一个int.
正如马克所说,你的减法需要括号.
此外,您正在传递的参数中执行right_justify的工作.该功能只是打印出你现在提供的内容.
你应该只传递一个字符串,然后让right_justify对字符串进行处理(即计算出它的长度,然后在它之前添加适当数量的空格),然后再打印它.
就像是:
def right_justify(s):
sub = len(s)
new_s = ' ' * (70 - sub) + s
print new_s
right_justify('Allen')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
557 次 |
| 最近记录: |