python: проверьте, что в переменной есть значение - PullRequest
0 голосов
/ 25 июня 2018

Я новичок в python и работаю с циклом while. У меня есть сценарий, мне нужно проверить, имеет ли переменная значение или строку, связанную с ним, и чтобы найти это, я не должен использовать встроенные функции в Python. Я попытался использовать приведенный ниже цикл while, но его ошибка была выбрана, как показано:

Код:

li = [1,2,3,4,5,"string1", "string2"]

print ("Test of List")

i = 0

while (li[i] != ""):
    print (li[i])
    i = i + 1

print ("Val of i :",i)

Выход:

Test of List

1

2

3

4

5

string1

string2

Traceback (most recent call last):

  File "C:\Users\sesubra2\Desktop\python_codes.py", line 71, in <module>

    while (li[i] != ""):

IndexError: list index out of range

Ответы [ 5 ]

0 голосов
/ 25 июня 2018
li = [1, 2, 3, 4, 5, "string1", "string2"]

print ("Test of List")

i = 0

while (i < len(li)):
    if(li[i] != ""):
        print (li[i])
    i = i + 1

print ("Val of i :", i )

Причина этого в том, что ваше утверждение while неверно.Попробуй

И если тебе все еще нравится твоя логика, Попробуй

def checkValiable(array, i):

    while (array[i] != ""):
        print (li[i])
        i = i + 1

    if(i < len(array) - 1):
        del array[i];
        checkValiable(array, i - 1)
        return

    print ("Val of i :", i)
    return array

li = [1, 2, 3, 4, 5,"", "string1", "string2"]


print ("Test of List")

i = 0
li.append("")

checkValiable(li, i)
0 голосов
/ 25 июня 2018

Я думаю, что использование цикла for будет более эффективным и простым

for element in li:
    print("The value of i: ", i)

Но для вашего цикла while это выдает ошибку, потому что пока цикл не имеет истинного условия для остановки, попробуйте использовать

While i < len(li) :
  if i != "" :
      print(' The value of i', i) 
  else:
      print (' empty element ') 
  i=+1
0 голосов
/ 25 июня 2018

Так что, если мы хотим посчитать количество элементов в списке без фактического вызова len, это можно сделать следующим образом.

li = [1, 2, 3, 4, 5, "string1", "string2"]

print("Test of List")

i = 0
try:
    while True:
        li[i]
        i += 1
except IndexError:
    print('Length of the list:', i)

Это намного медленнее, ужасно тупо и вообще плохо, но работает. Я бы использовал len(li)

0 голосов
/ 25 июня 2018

Я улучшил ваш код, чтобы избежать ошибки. (Работает):

li = [1,2,3,4,5,"string1", "string2"]

for i in range(len(li)):
    print(li[i])

Или:

li = [1,2,3,4,5,"string1", "string2"]

for element in li:
    print(element)
0 голосов
/ 25 июня 2018

Вы используете пока не тот путь, т.е. для проверки условий.Вместо этого используйте while для циклического прохождения списка и внутри него, используйте условие if для проверки.После завершения if увеличьте i за пределы оператора if.

li = [1,2,3,4,5,"string1", "string2"]

print ("Test of List")

i = 0

while i<len(li):
    if li!= "" :
        print (li[i])
    i=i+1

print ("Val of i :",i)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...