Ввод элементов из файла в порядке убывания без встроенных функций

Я повторно выполнил программу после сортировки пузыря.

def main(): try: array=[] file=open(input("Please enter the name of the file you wish to open:" )) A =file.read().split() file.close() n = len(A) print ("These following", n,"numbers are in the inputted file:\n", A) for i in range(n): for j in range(1,ni): if A[j-1] < A[j]: (A[j-1], A[j]) = (A[j],A[j-1]) print("We can now organize it in descending order:\n", A) except IOError as e: print("({})".format(e)) Output_File = input("Where would you like to save this data?") fileObject = open(Output_File, 'a') fileObject.write(str(Output_File)+'\n') print("Your file is now saved as", Output_File,". \n Have a nice day!") fileObject.close() 

если name == ' main ': main ()

  • Сортировка списка кортежей кортежей
  • Как вы сортируете список в Jinja2?
  • TypeError: '<' не поддерживается между экземплярами 'tuple' и 'str'
  • из списка целых чисел, получить номер, ближайший к данному значению
  • django - преобразовать список обратно в запрос
  • Сортировка CSV в Python
  • Проблема в том, что он сортирует каждые 3 числа в списке. поэтому, если у меня 9 номеров, у него будет 3 разных. например, 1 -3 10 6 5 0 3 -5 20, будет: [6, 5, 3, 20, 10, 1, 0, 5, 5 ',' -3 ']. Что теперь может быть не так? И правильно ли я сделал выходной файл?

  • Python - найти индекс элемента в списке списков
  • Python: слияние двух списков словарей
  • Python sort () первый элемент списка
  • Сортировка списка кортежей кортежей
  • Значения списка изменений функций, а не значения переменных в Python
  • Самый быстрый способ поиска списка в python
  • 2 Solutions collect form web for “Ввод элементов из файла в порядке убывания без встроенных функций”

    Где у вас есть эта строка:

     x = minimum 

    Я думаю, вы имели в виду:

     minimum = x 

    Похоже, что вы просто неправильно определили порядок назначения. Присвоение переменной x во время вашей итерации A имеет побочных эффектов.

    РЕДАКТИРОВАТЬ

    Ваша проблема, как я обнаружил в комментариях, заключается в том, что вы используете функцию readlines() , но имеете только одну строку в вашем файле. То, что вы действительно хотите сделать, это прочитать эту строку, а затем использовать split() для создания списка:

     A = file.read().split() 

    Имейте в виду, что, поскольку вы используете строки при сравнении с «<», вы не получите числовой порядок после запуска вашего кода, вы получите лексикографический порядок.

    пример:

    входы:

     5 4 14 6 -1 2 0 9 8 7 3 4 -10 200 

    вывод:

     ['-1'] ['-1', '-10'] ['-1', '-10', '0'] ['-1', '-10', '0', '14'] ['-1', '-10', '0', '14', '2'] ['-1', '-10', '0', '14', '2', '200'] ['-1', '-10', '0', '14', '2', '200', '3'] ['-1', '-10', '0', '14', '2', '200', '3', '4'] ['-1', '-10', '0', '14', '2', '200', '3', '4', '4'] ['-1', '-10', '0', '14', '2', '200', '3', '4', '4', '5'] ['-1', '-10', '0', '14', '2', '200', '3', '4', '4', '5', '6'] ['-1', '-10', '0', '14', '2', '200', '3', '4', '4', '5', '6', '7'] ['-1', '-10', '0', '14', '2', '200', '3', '4', '4', '5', '6', '7', '8'] ['-1', '-10', '0', '14', '2', '200', '3', '4', '4', '5', '6', '7', '8', '9'] 

    Обратите внимание, как 200 не заканчивается, а приходит после 2 , чтобы получить числовой порядок, необходимый для принуждения строк к числовому типу данных, вероятно, к int . Вы можете легко сделать это, когда вы читаете числа из файла, используя функцию map :

     A = map(int, file.read().split()) 

    Это вызовет функцию int cast для каждого элемента, возвращаемого split, перед сохранением элемента в A. После этого изменения это результат, который я вижу из вашей программы:

    входы:

     5 4 14 6 -1 2 0 9 8 7 3 4 -10 200 

    вывод:

     [-10] [-10, -1] [-10, -1, 0] [-10, -1, 0, 2] [-10, -1, 0, 2, 3] [-10, -1, 0, 2, 3, 4] [-10, -1, 0, 2, 3, 4, 4] [-10, -1, 0, 2, 3, 4, 4, 5] [-10, -1, 0, 2, 3, 4, 4, 5, 6] [-10, -1, 0, 2, 3, 4, 4, 5, 6, 7] [-10, -1, 0, 2, 3, 4, 4, 5, 6, 7, 8] [-10, -1, 0, 2, 3, 4, 4, 5, 6, 7, 8, 9] [-10, -1, 0, 2, 3, 4, 4, 5, 6, 7, 8, 9, 14] [-10, -1, 0, 2, 3, 4, 4, 5, 6, 7, 8, 9, 14, 200] 

    Я закончил! Мне просто нужно было разобраться в другом способе превратить свой список в целые числа. Вот:

     def main(): try: file=open(input("Please enter the name of the file you wish to open:" )) A = [] #Here I convert the list to integers to separate as numbers in order to sort later for val in file.read().split(): A.append(int(val)) file.close() n = len(A) print ("These following", n,"numbers are in the inputted file:\n", A) for i in range(n): for j in range(1,ni): if A[j-1] < A[j]: (A[j-1], A[j]) = (A[j],A[j-1]) #swap print("We can now organize it in descending order:\n", A) Output_File = input("Where would you like to save this data?") fileObject = open(Output_File, 'a') fileObject.write(str(Output_File)+'\n') print("Your file is now saved as",Output_File,".\nHave a nice day!") fileObject.close() except IOError as e: print("({})".format(e)) if __name__ == '__main__': main() 
    Python - лучший язык программирования в мире.