我是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
答案 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)