Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过用户';s输入_Python_List_Input - Fatal编程技术网

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拆分字符串”。您需要拆分输入字符串,然后打开