Python ValueError:以10为基数的int()的文本无效:';布卢森大厅';

Python ValueError:以10为基数的int()的文本无效:';布卢森大厅';,python,spaces,Python,Spaces,这是家庭作业,但我不是在找讲义。错误消息还没有真正解释过,所以我不知道如何解决这个问题,也不知道为什么会发生。我知道当我试图把s变成一个整数时会发生这种情况,但是如果我不这样做,我会得到一个不同的错误,所以我有点迷路了。。。 我也试过看其他一些有类似问题的帖子,但我对Python非常陌生,我无法理解这些解释 我认为这是一个非常简单的函数。 我试着把它转换成一个整数,这样我就可以对它执行范围函数了,但这似乎不起作用。该程序应该首先在“Blusson Hall”中的字母之间留出一个空格,如果已经有空

这是家庭作业,但我不是在找讲义。错误消息还没有真正解释过,所以我不知道如何解决这个问题,也不知道为什么会发生。我知道当我试图把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")

我想我看到了这个问题

而不是

n = int(s)
试一试


您的问题是,您正在使用非数字字符串调用
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'
例如:

>>> s = "Busson Hall"
>>> for i in range(len(s)):
...     print i
...
0
1
2
3
4
5
6
7
8
9
10
另外,作为一些额外的帮助,您可以使用
s[i]
来获取
s
i
第个字符(当然,零是第一个字符)。此外,您可能希望从一个空字符串开始,然后向其添加单个字符(从原始字符串和您希望添加的任何空格开始),以便在返回它之前逐步构建它

例如,此代码段复制每个字符,每个字符之间都有冒号:

>>> 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:

除了为您编写代码(您明智地决定不要求编写代码),这可能就是我所能提供的全部帮助(尽管您可以随意提出任何问题,我将提供进一步的建议)。

您无法将字符串转换为整数,这就是您键入以下内容时尝试执行的操作:

n = int(s)
spaced只接受一个参数“s”,然后传入一个字符串,然后尝试将其转换为整数。我想你想要的可能是

n = len(s)
但实际上,你根本不需要这个。因为字符串是可编辑的,所以可以像这样循环:

for ch in s:
      ...do stuff here...
如果s中每个字符的索引都有用/更简单,enumerate()将为您提供:

   for idx, ch in enumerate(s):
       ...do stuff here...
要知道,实际上根本不需要for循环。由于字符串是iterable,并且“join()”将iterable作为参数,因此可以用以下代码替换几乎所有代码:

' '.join(s)

如果您以前没有对Python做过很多工作,那么这看起来很奇怪。我创建了一个字符串“”,join()是一个所有字符串都可用的方法。Join获取一些iterable对象(比如列表,甚至另一个字符串),并将作为连接对象的字符串放在iterable的每个元素之间。因此,在本例中,它将“”放在字符串“s”的每个元素之间

你在这里写的东西没有任何意义。你到底想干什么?首先,您似乎试图将
[i]
视为变量名;变量名中不能有方括号。如果能知道为什么我在这里是-1,那就太好了。答案有问题吗?哇!我希望收到一封关于任何回复的电子邮件通知,所以我再也没有回电。xD非常感谢您的回复,我认为这将真正帮助我为期末考试而学习。
   for idx, ch in enumerate(s):
       ...do stuff here...
' '.join(s)