2015-11-15 5 views
1

Как сохранить переменную положения i как int, чтобы я мог играть с этой конкретной позицией в строке Это будет отображаться моноширинным шрифтом.Указание строки в Int внутри цикла for

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

Чтобы быть ясно, вы хотите, чтобы каждый символ в строке по его индексу? поэтому, если предложение «abcd», предложение [0] = «a» предложение [1] = b и т. д.? – labheshr

+0

Да, точно. Я хочу знать положение любых пробелов в строке ie- в строке hi hi Я хочу, чтобы j равнялся 2 – Ethan

+0

ok, поэтому in if i == "", просто введите expression.index (i), и это будет дать вам индекс пробелов ... – labheshr

ответ

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]) 
+0

Большое спасибо! – Ethan

0

Вы должны использовать enumerate

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

Вы бросаете пространство символ в целое. Конечно, не работает.

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

Если Вы пытаетесь найти позицию ' ' использования sentence.index(' '):

sentence = input() 
try: 
    i = sentence.index(' ') 
    print (sentence[0:j]) 
except ValueError: 
    pass 
Смежные вопросы