好的,这是代码。我不打算在日志中输入错误。它不需要复制代码。基本上说,存在一个问题,其中“ L”不是类型int。
def i_am_here(path):
print(path)
lst = []
num = []
x = 0
y = 0
for i in path:
try:
int(i)
num.append(int(i))
except ValueError:
if i == 'r' or i == 'R':
new = ''.join(num)
lst.append(new)
lst.append('r')
num = []
if i == 'L' or i == 'l':
new = ''.join(num)
lst.append(new)
lst.append('l')
num = []
new = ''.join(num)
lst.append(new)
lst = lst[1:len(lst)]
print(lst)
for i in range(len(lst)):
if lst[i] == 'r':
print(lst[i+1])
好的,所以我99%的人确定这只是我使用时的错误:
for i in path:
try:
int(i)
num.append(int(i))
except ValueError:
if i == 'r' or i == 'R':
lst.append(num)
lst.append('r')
num = []
if i == 'L' or i == 'l':
lst.append(num)
lst.append('l')
num = []
一切正常。有什么想法吗?我本来要提交问题单,但在此之前我想我可能会问。
答案 0 :(得分:1)
它与您尝试发送到函数i_am_here的参数路径连接。如果您尝试使用单个字符发送字符串,则没有问题。整数值会引起问题。
如果您尝试通过以下方式调用函数:
i_am_here(1)
您在这里遇到了问题
for i in path:
因为在循环中,您不能使用简单的整数值,而只能使用可迭代对象(例如列表或字符串)。
您应该使用列表,而不是使用单个整数值:
param_lst = [1]
i_am_here(param_lst)
而且您还应该在此处修复代码:
new = ''.join(num)
您应该将其重写为:
new = ''.join(str(n) for n in num)
答案 1 :(得分:0)
您的代码已分解,因为它试图转换具有非数字字符的字符串,例如:
在:
text = 'L'
print int(text)
出局:
ValueError:以10为底的'int'()无效文字:'L'
但是如果:
在:
text = '2'
print int(text)
出局:
2
但是,我认为您的大多数代码行都是无用的。我只是绑去删除那些部分。这是:
编辑:
def i_am_here(path):
num = []
for i in path:
if isinstance(i, str): #check if 'i' is a sting type
if i.isdigit():
num.append(int(i))
else:
num.append(i.lower())
else:
num.append(i)
return(num)
例如:
path= [5, 'r', 'L', 0.00032,'l','55','%','R', [], '{}'] #This is an example
num_List = i_am_here(path)
for i in num_List :
if i != 'r':
print(i)
您实际上是在尝试将大写的字符串转换为小写。