这是家庭作业,但我不是在寻找讲义.错误消息还没有真正解释过,所以我不知道如何解决这个或为什么会发生这种情况.我知道当我尝试将s变成一个整数时会发生这种情况,但如果我不这样做,我会得到一个不同的错误,我有点迷失...我也尝试过查看其他类似问题的帖子但是我是Python的新手,我不能按照解释.
我认为这是一个非常简单的功能.我已经尝试将它转换为一个整数,我可以对它执行范围功能,但这似乎不起作用.该程序应该首先在"Blusson Hall"中的字母之间放置一个空格,如果已经存在一个空格,则添加一个额外的空间,最后在最终产品周围打印该设计.谢谢你的帮助.
def spaced(s):
n = int (s)
for [i] in range (n):
if [i] != " ":
n == n+ [i] + " "
if [i] == " ":
n == n+ [i] + " "
print "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-"
print ". ."
print "- " + str (n)+ " -"
print ". ."
print "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-"
#- you write (5 marks) -#
###################
#- Tester's code -#
###################
spaced("Blusson Hall")
Run Code Online (Sandbox Code Playgroud)
您的问题是您spaced使用非数字字符串调用,然后尝试将其转换为整数:
>>> int("Blusson Hall")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'Blusson Hall'
Run Code Online (Sandbox Code Playgroud)
如果你想要一个基于字符串长度的范围,你可以使用类似的东西:
for i in range(len(s)):
Run Code Online (Sandbox Code Playgroud)
如:
>>> s = "Busson Hall"
>>> for i in range(len(s)):
... print i
...
0
1
2
3
4
5
6
7
8
9
10
Run Code Online (Sandbox Code Playgroud)
而且,作为一些额外的帮助,你会s[i]用来获得i'th(当然是第一个)的特征s.此外,您可能希望以空字符串开头,然后将单个字符附加到它(从原始字符串和您想要添加的任何空格),以便在返回之前逐步构建它.
例如,此代码段会复制每个字符,并在它们之间使用冒号:
>>> s = "paxdiablo"
>>> s2 = ""
>>> for i in range(len(s)):
... s2 = "%s%s:%s:" % (s2, s[i], s[i])
...
>>> print s2
p:p:a:a:x:x:d:d:i:i:a:a:b:b:l:l:o:o:
Run Code Online (Sandbox Code Playgroud)
没有为你编写代码(明智地,你决定反对要求),这可能是我可以给予的所有帮助(尽管可以随意提出任何你想要的问题,我会提供进一步的建议).