python:检查变量中是否有值

时间:2018-06-25 06:08:55

标签: python while-loop

我是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 :(得分:0)

您使用的是错误的方式,即检查条件。而是使用while遍历列表及其内部,使用if条件进行检查。完成if之后,在if语句之外增加i。

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)

答案 1 :(得分:0)

我改进了代码以避免错误。 (有效):

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)

答案 2 :(得分:0)

我认为使用for循环会更高效,更简单

 ApplicationDbContext db = new ApplicationDbContext();
 var user = db.Users.Where(x => x.UserName == User.Identity.Name).FirstOrDefault();

但是对于您的while循环,它会产生错误,因为while循环没有停止的真实条件,请尝试使用

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

答案 3 :(得分:0)

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)

答案 4 :(得分:-1)

因此,如果我们想计算列表中的元素数量而不必实际调用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)