2016-10-24 4 views
0
lista = [] 
for i in range(5): 
    i = int(input("Digite um valor para o vetor: ")) 
    lista = lista + [i] 
x = int(input("Digite um valor para ver sua posição: ")) 
counter = 0 
for j in range(5): 
    if lista[j] == x: 
    counter =+ 1 
     print(j) 
if counter == 0: 
    print(x-1) 

В вышеуказанной программе вы помещаете в список любые 5 номеров, затем вы ищете позицию номера, введенного в список, если номер введенного нет в списке, он будет печатать x-1.Как сделать эту программу без счетчика?

Например List = [1, 2, 3, 4, 5]

x = 5 тогда он будет печатать 5

x = 7 он напечатает 6

Как сделать печать x-1 без рецепта? Я попытался с помощью:

else: 
    print(x-1) 

но тогда он будет печатать x-1 5 раз, я только хочу, чтобы напечатать его один раз.

ответ

0

Вам совсем не нужен счетчик, поскольку вы используете его только для проверки совпадений. Вы можете использовать структуру for..else, чтобы проверить, закончен ли цикл, не выходя из break.

for j in range(5): 
    if lista[j] == x: 
     print(j) 
     break 
else: 
    print(x-1) 

Если вы хотите напечатать каждый индекс, соответствующий поисковый запрос, я хотел бы перейти к другому подходу:

>>> x = 1 
>>> print(*(i for i,v in enumerate(map(int, input('Enter values separated by space:\n').split())) if v==x)) 
Enter values separated by space: 
1 1 1 1 1 
0 1 2 3 4 
>>> print(*(i for i,v in enumerate(map(int, input('Enter values separated by space:\n').split())) if v==x)) 
Enter values separated by space: 
2 2 1 10 1 
2 4 
>>> print(*(i for i,v in enumerate(map(int, input('Enter values separated by space:\n').split())) if v==x)) 
Enter values separated by space: 
2 2 1 10 
2 
+0

Спасибо, я знал, что более простой способ ИДК, как я не думаю о том, что – Nibaga

+0

Но если я создам список [1, 1, 1, 1, 1] и x = 1 – Nibaga

+0

Он будет печатать только 0 вместо 0, 1, 2, 3, 4, так или иначе, я могу это исправить? – Nibaga

Смежные вопросы