编写一个称为stop_at_z的函数,该函数遍历字符串列表。使用while循环,将每个字符串附加到新列表中,直到出现的字符串为“ z”。该函数应返回新列表。
def stop_at_z(str):
d = 0
x=[]
str1 = list(str)
while True :
if str1[d] != 'Z' :
x.append(str1[d])
d+=1
if str1[d] == 'Z' :
break
return x
使用while循环,将每个字符串附加到新列表中,直到出现的字符串为“ z”。该函数应返回新列表。
答案 0 :(得分:1)
您收到此错误消息是因为如果字符串中没有大写字母'Z',d
会无限增加。相反,您应该只在while
循环中而未达到输入字符串的完整长度:
def stop_at_z(inputstr):
d = 0
x=[]
str1 = list(inputstr)
while d<len(inputstr) :
if str1[d] == 'z' :
break
else:
x.append(str1[d])
d+=1
return x
请注意,您可以使用takewhile()
from the itertools
module实现相同的目的:
from itertools import takewhile
def stop_at_z(inputstr):
return list(takewhile(lambda i: i != 'z', inputstr))
print(stop_at_z("hello wzrld"))
输出:
['h', 'e', 'l', 'l', 'o', ' ', 'w']
答案 1 :(得分:0)
如果字符串'z'不在列表中怎么办?
然后继续增加索引并最终遇到错误。
答案 2 :(得分:0)
这就是您的操作方式,搜索“ z”区分大小写,请尝试以下操作:
If str1[d].strip().lower() == “z”
它将剥离前导空格和尾随空格,然后将str1元素转换为小写字母(这两个都只返回修改后的字符串,因此原始字符串不变)并将其与小写字母z比较
答案 3 :(得分:0)
仅将循环限制为列表的长度应该会有所帮助。
def stop_at_z(str):
d = 0
x=[]
str1 = list(str)
for d in range(0,len(str1)) :
print(d)
if str1[d] != 'Z' :
x.append(str1[d])
else:
break
return x
答案 4 :(得分:0)
基本上,我们需要一个可以包含所有字符的列表,直到获得“ z”为止。我们可以做到的一种方法是,首先将字符串转换为列表,然后迭代该列表,并将每个字符添加到新列表ls
中,直到得到“ z”为止。但是问题是我们可能会得到一个不带“ z”的字符串,因此我们需要迭代直到该列表的长度。我希望一切都清楚。
def stop_at_z(s):
ls = []
idx = 0
x = list(s)
while idx<len(x):
if x[idx]=="z":
break
ls.append(x[idx])
idx+=1
return ls
答案 5 :(得分:0)
这是我第一次在这里发帖,但是我使用了while循环:
def stop_at_z(input_list):
print (input_list)
output_list=[]
index=0
while index< len(input_list):
if input_list[index] != "z":
output_list.append(input_list[index])
index+=1
else:
break
return output_list