Python 通过用户';s输入
我正在尝试编写一个函数,它以用户输入的整数列表作为参数,并对它们进行排序 我遇到了一些问题,因为如果我将整数转换为字符串(我认为这可能是最好的方法,因为输入中有逗号),并将它们附加到一个空列表中,我会得到一个错误 以下是功能:Python 通过用户';s输入,python,list,input,Python,List,Input,我正在尝试编写一个函数,它以用户输入的整数列表作为参数,并对它们进行排序 我遇到了一些问题,因为如果我将整数转换为字符串(我认为这可能是最好的方法,因为输入中有逗号),并将它们附加到一个空列表中,我会得到一个错误 以下是功能: def sort_integers(x): lst = [] for i in x: lst.append(i) sorted_list = sorted(lst) print(sorted_list) s
def sort_integers(x):
lst = []
for i in x:
lst.append(i)
sorted_list = sorted(lst)
print(sorted_list)
sort_integers(str(input("Enter some numbers: ")))
但如果我输入10,9,8作为整数,这就是我得到的输出:
[',', ',', '0', '1', '8', '9']
预期输出为:8,9,10
。我曾尝试使用对整数进行排序(int(输入(“输入一些数字”))
,但出现以下错误:
ValueError: invalid literal for int() with base 10: '10,9,8'
我做错了什么?您只对
数字感兴趣,当您使用for循环时,您会声明,对于我字符串中的每个符号,将其添加到列表中,,
,并且
(空格)是Python的符号
对字符串使用str.split()split()
接受一个要拆分字符串的参数,在本例中是它的,
为了达到您的目标,您可以使用以下方法:
def sort_integers(x):
return sorted([x for x in x.split(',') if x.isdigit()])
我返回排序列表,该列表是根据传递给函数的字符串构建的,并且使用str.isdigit()
内置方法仅获取数字
另外,您不需要使用str(input()
,因为input()
总是返回字符串,不管您传递给它什么。您只对数字
感兴趣,当您使用for循环时,您会声明将字符串中的每个符号添加到列表中,,
和
(空格)是Python的一个符号
对字符串使用str.split()
返回一个包含字符串中元素的列表。split()
接受一个要拆分字符串的参数,在本例中,它是,
为了达到您的目标,您可以使用以下方法:
def sort_integers(x):
return sorted([x for x in x.split(',') if x.isdigit()])
我返回排序列表,该列表是根据传递给函数的字符串构建的,并且使用str.isdigit()
内置方法仅获取数字
另外,您不需要使用str(input()
,因为input()
总是返回一个字符串,不管您传递给它什么。所以我假设您的输入是:0,1,89
每次循环使用此字符串一个字符时:
x=“0,1,89”
对于x中的i:
印刷品(一)
您的输出将是
0
,
1
,
8
9
当在字符串中循环时,一次只能得到一个字符。问题是您还将,
附加到列表中
第一个解决方案:
def sort_整数(x):
lst=[]
对于x中的i:
若(i!=“,”):#仅附加到字符列表中不是逗号
一、附加(一)
sorted_list=sorted(lst)#您不应该在循环中对列表进行排序,只有在您已经拥有列表中的所有内容之后
打印(已排序的列表)
对整数排序(str(输入(“输入一些数字”))
第二种解决方案:(建议)
def sort_整数(x):
lst=[]
对于x中的i:
尝试:
int(i)#尝试将字符串转换为数字,
#如果它起作用,代码将继续运行
#否则将由以下人员处理
一、附加(一)
除值错误外:
打印(“这不是一个数字,因此正在跳过”)
sorted_list=sorted(lst)#您不应该在循环中对列表进行排序,只有在您已经拥有列表中的所有内容之后
打印(已排序的列表)
对整数排序(str(输入(“输入一些数字”))
所以我假设你的输入是:0,1,89
每次循环使用此字符串一个字符时:
x=“0,1,89”
对于x中的i:
印刷品(一)
您的输出将是
0
,
1
,
8
9
当在字符串中循环时,一次只能得到一个字符。问题是您还将,
附加到列表中
第一个解决方案:
def sort_整数(x):
lst=[]
对于x中的i:
若(i!=“,”):#仅附加到字符列表中不是逗号
一、附加(一)
sorted_list=sorted(lst)#您不应该在循环中对列表进行排序,只有在您已经拥有列表中的所有内容之后
打印(已排序的列表)
对整数排序(str(输入(“输入一些数字”))
第二种解决方案:(建议)
def sort_整数(x):
lst=[]
对于x中的i:
尝试:
int(i)#尝试将字符串转换为数字,
#如果它起作用,代码将继续运行
#否则将由以下人员处理
一、附加(一)
除值错误外:
打印(“这不是一个数字,因此正在跳过”)
sorted_list=sorted(lst)#您不应该在循环中对列表进行排序,只有在您已经拥有列表中的所有内容之后
打印(已排序的列表)
对整数排序(str(输入(“输入一些数字”))
试试这个:
def sort_integers(x):
x = x.split(',')
sorted_list = sorted([int(i) for i in x])
print(sorted_list)
sort_integers(str(input("Enter some numbers: ")))
或此(现有代码的最小更改)
输出:
Enter some numbers: 10,9,8
[8, 9, 10]
试试这个:
def sort_integers(x):
x = x.split(',')
sorted_list = sorted([int(i) for i in x])
print(sorted_list)
sort_integers(str(input("Enter some numbers: ")))
或此(现有代码的最小更改)
输出:
Enter some numbers: 10,9,8
[8, 9, 10]
你已经学习了split
了吗?如果没有,那就去吧。谷歌“Python split string”。你需要拆分输入字符串,然后将结果字符串列表转换成数字列表。这能回答你的问题吗?在循环中使用输入,并将它们作为int追加到新列表中。然后排序()该列表..@TechieViN无法解决从一行中读取多个以逗号分隔的数字的问题。请尝试对整数进行排序(映射(int,input(“…”)。拆分(“,”))
,即按,
拆分字符串,然后将每个子字符串映射到int
您是否研究过拆分
了?如果没有,请这样做。谷歌“Python拆分字符串”。您需要拆分输入字符串,然后打开