Python排序,而不是对数据排序

Python排序,而不是对数据排序,python,list,sorting,input,Python,List,Sorting,Input,我有一个非常简单的程序来对数据进行排序并将其写入文本文件,但是排序的方法并没有做到它应该做的。相反,这些值是按照我输入它们的顺序输入数组和文本文件的。谁能快速解释一下原因 import os import os.path values = [] #for value in values: data = 1 while data: data = input('Enter the values. Press enter to confirm values:') if data

我有一个非常简单的程序来对数据进行排序并将其写入文本文件,但是排序的方法并没有做到它应该做的。相反,这些值是按照我输入它们的顺序输入数组和文本文件的。谁能快速解释一下原因

import os
import os.path

values = []
#for value in values:
data = 1

while data:

    data = input('Enter the values. Press enter to confirm values:')

    if data:
        values.append(data)
    else:
        data = data
        print(sorted(values))
sort = sorted(values)
print(sort)

name = open("sortedvalues.txt", "a+") #opens file usernames.txt and gets ready to write to it
file = str(sort) #converts the values to a string and writes them to the file
name.write('\n' + file) #writes contents in file to usernames.txt
name.close() #closes file
open1 = open("sortedvalues.txt", "r") #opens file to read it
print('reading')
print (open1.read()) #prints whatever is in the text file

我无法重现你的问题。下面的代码工作正常,对给定的一组数字进行正确排序并写入文件

另外,您对数组进行了两次排序,我刚刚更正了它

values = []
sorted_values = []
data = 1

while data:
    data = input('Enter the values. Press enter to confirm values:')

    if data:
        values.append(data)
    else:
        data = data
        # here you are sorted it first and second outside of while loop
        sorted_values = sorted(values)
        print(sorted_values)

print(sorted_values)

with open("sortedvalues.txt", "a+") as name:
    name.write('\n' + str(sorted_values))

with open("sortedvalues.txt", "r") as open1:
    print('reading')
    print (open1.read())
投入:

5
3
4
2
1
0
内部文件:

[1, 2, 3, 4, 5]

@约翰戈登在下面的评论中回答了这个问题。问题不在于代码的工作方式,而在于它可能是不恰当的。问题是整数值实际上被视为字符串,并像字符串一样进行排序。在排序之前,首先需要转换输入值

编辑我应该补充一点,将输入指定为整数会导致回溯,因为null(当用户按enter键确认输入值时)无法解析为整数。为了解决这个问题,我简单地添加了

while data:

data = input('Enter the values. Press enter to confirm values:')

if data:
        values.append(int(data))
else:
    data = data
    print(sorted(values))

具体来说,在
if data:
部分中,指定将数据作为int追加到列表中可以解决问题,并且
排序的
排序()方法可以正常工作。

欢迎使用StackOverflow。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。特别是,我们不必创建自己的测试用例并手动输入数据。我不厌其烦地把这当作休息,我无法重现你的问题。我按排序顺序得到输入——按预期排序。乍一看:表达式
data=data
是多余的。您计划何时从无限
循环中断?目前,它继续从用户获取值。@Austin:正如输入提示所示,循环将在空条目上中断。我在上面说过,但当我使用其他更随机的值和大于9的值时,排序似乎表现得很奇怪。我确信这与我缺少的
sort()
方法的一些基本语法有关,但我仍然不确定这是什么,以及如何修复它以接受任何大小的值。你能提供准确的输入和输出以及预期的输出吗?是的,作为一个例子,我输入了
4 55 64 344
,文件中返回的和数据是
['344','4','55','64']
。我希望返回的数组是['4','55','64','344']`。@benjaminpharis
['344','4','55','64']
确实已排序,因为这些值都是字符串。如果要进行数字排序,则必须转换输入值。@JohnGordon这绝对是答案。我感觉这是一些琐碎的格式问题。谢谢。