所以我有此代码,我想在其中对字符串进行排序并返回它
def sort_int_string(one_string):
one_string = one_string.replace("\n", ' ')
one_string = one_string.replace("\t", ' ')
one_string = one_string.strip()
if len(one_string) == 0:
return ''
else:
one_string = one_string.split(" ")
one_string = [int(i) for i in one_string]
one_string.sort()
one_string = [str(i) for i in one_string]
return ' '.join(one_string)
但是当我尝试以此运行它时。
hello = "\t42 4 -17\n"
print(sort_int_string(hello)
我得到以10为底的int()的错误无效文字:”不知道为什么我明白了。请帮助。
您收到的错误是因为i
的几个值是''
(空字符串),并且您试图将它们转换为整数。就像上面的注释所建议的那样,使用strip
和split
删除空格。然后排序:
def sort_int_string(one_string):
return sorted(hello.strip().split())
hello = "\t42 4 -17\n"
print(sort_int_string(hello)) # returns ['-17', '4', '42']
尝试一下
def sort_int_string(one_string):
string_lst = one_string.strip().split(" ")
string_lst.sort()
return ''.join(string_lst)
hello = "\t42 4 -17\n"
print(sort_int_string(hello))
输出:-17442
代码的问题是,数组中存在空字符串,并且在进行检查时会返回错误,因为无法将其转换为int。因此,只需执行一个条件检查i值是否不是空字符串即可。
def sort_int_string(one_string):
one_string = one_string.replace("\n", ' ')
one_string = one_string.replace("\t", ' ')
one_string = one_string.strip()
if len(one_string) == 0:
return ''
else:
one_string = one_string.split(" ")
one_string = [int(i) for i in one_string if i != ""]
one_string.sort()
one_string = [str(i) for i in one_string]
return ' '.join(one_string)
hello = "\t42 4 -17\n"
print(sort_int_string(hello))