在for循环中将String转换为Int

时间:2015-11-15 20:20:33

标签: python

如何将位置变量i存储为int,以便我可以在字符串中使用该特定位置 这将以等宽字体显示。

sentence = input()
for i in sentence:
    if i == " ":
        j = int(i) #this line is throwing an error 
        print (sentence[0:j])

3 个答案:

答案 0 :(得分:3)

您的代码中存在两个缺陷:

if i == " ":
    j = int(i)

因此,检查i是否为空格字符,在这种情况下,您要将该空格转换为数字。当然那不会起作用 - 那个空间应该是什么意思?

另一个缺陷是你在那里有空格角色的原因。你说你想要使用角色的位置或索引。但是你的for循环做了一些不同于你期望的事情:for x in sequence将迭代该序列中的每个元素x。如果是字符串序列,您将获得每个字符 - 而不是索引。

例如:

>>> for x in 'foo':
        print(x)

f
o
o

如您所见,它会打印字符,而不是索引。

虽然您可以使用enumerate()。枚举将枚举一个序列,为您提供值它出现的索引:

>>> for i, x in enumerate('foo'):
        print(i, x)

0 f
1 o
2 o

所以你也得到了索引。

在您的情况下,您的代码将如下所示:

sentence = input()
for i, x in enumerate(sentence):
    if x == " ":
        print(sentence[0:i])

答案 1 :(得分:0)

您应该使用enumerate

for k, v in enumerate(sentence):
   if v == " ":
     print (sentence[0:k])

您正在将空格char转换为int。当然不行。

>>> int(' ')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: ''

答案 2 :(得分:0)

如果您尝试找到' '使用sentence.index(' ')的位置:

sentence = input()
try:
    i = sentence.index(' ')
    print (sentence[0:j])
except ValueError:
    pass