|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.08.2018, 18:52 | #1 |
Пользователь
Регистрация: 27.08.2018
Сообщений: 31
|
Сортировка в Python
Я новичок в python! Особо не горите!
Недавно написал такую софтину: num1 = input('Write first number: ') num2 = input('Write second number: ') num3 = input('Write third number: ') num4 = input('Write fourth number: ') num5 = input('Write fifth number: ') spisok = [num1,num2,num3,num4,num5] sred = ((int(num1)+int(num2)+int(num3)+int (num4)+int(num5))/5) summa = (int(num1)+int(num2)+int(num3)+int( num4)+int(num5)) multiply = (int(num1)*int(num2)*int(num3)*int( num4)*int(num5)) minimun = (min(spisok)) maximum = (max(spisok)) flth = (sorted(spisok)) fhtl = sorted(spisok, reverse=True) print ('Min =', minimun) print ('Max =', maximum) print ('Average =', sred) print ('Summa =', summa) print ('Multiply =', multiply) print ('FlTH =', flth) print ('FHTL =', fhtl) Суть её в том, чтобы человек вводил 5 чисел и они красиво сортировались, умножались, складывались и тд. (смотрите прогу) Ввёл я значит эти числа (именно в этом порядке!): 213, 245, 25, 61, 259 А мне выдаёт: Write first number: 213 Write second number: 245 Write third number: 25 Write fourth number: 61 Write fifth number: 259 Min = 213 Max = 61 Average = 160.6 Summa = 803 Multiply = 20611770375 FlTH = ['213', '245', '25', '259', '61'] FHTL = ['61', '259', '25', '245', '213'] В чём проблема? Как решить? Заранее спасибо! |
28.08.2018, 18:59 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Дык минимум, максимум и сортировка строк, а не чисел
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
28.08.2018, 19:16 | #3 |
Пользователь
Регистрация: 27.08.2018
Сообщений: 31
|
Хорошо, а как пофиксить? С помощью int? Подскажи пожалуйста!
Последний раз редактировалось Exalted; 28.08.2018 в 19:50. |
28.08.2018, 20:32 | #4 |
Пользователь
Регистрация: 27.08.2018
Сообщений: 31
|
И ещё, когда я пишу простыми цифрами, то всё получается идеально!
Write first number: 1 Write second number: 2 Write third number: 3 Write fourth number: 4 Write fifth number: 5 Min = 1 Max = 5 Average = 3.0 Summa = 15 Multiply = 120 FlTH = ['1', '2', '3', '4', '5'] FHTL = ['5', '4', '3', '2', '1'] |
28.08.2018, 20:38 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
список создай с числами, а не со строками
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
29.08.2018, 11:00 | #6 |
Пользователь
Регистрация: 27.08.2018
Сообщений: 31
|
Всё, спасибо, я разобрался!
|
29.08.2018, 11:11 | #7 | ||
Старожил
Регистрация: 23.10.2010
Сообщений: 2,309
|
Цитата:
Не во всех языках программирования процедуры ввода и вывода выполняют операции преобразования строк в числа и наоборот. Более того там, где такое преобразование реализовано, например в Паскале, это преобразование опирается на известный тип переменной. Например, в Паскале: Код:
Код:
В Питоне переменные получаю свой тип при инициализации, и что вы хотели ввести в свои переменные ему, интерпретатору, неизвестно. Процедура input() всегда вводит текстовую строку, с которой вы, как программист, поступаете по своему усмотрению. Например, преобразуете к целому или вещественному типу. При этом так же могут появляться ошибки из-за невнимательности пользователя. Для решения проблем, возникающих при преобразовании, используют try .... Так что напишите: Код:
Дополнение: Цитата:
Как-то так, ...
Последний раз редактировалось ViktorR; 29.08.2018 в 11:13. |
||
29.08.2018, 11:44 | #8 |
Пользователь
Регистрация: 27.08.2018
Сообщений: 31
|
Спасибо! Тоесть, если я преобразую строку в числа, я использую int. Когда наоборот - str. Я правильно понял?
|
29.08.2018, 13:20 | #9 | |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,309
|
Цитата:
Важно: input() принимает символы и передаёт их как есть в переменную. Вы выбираете что с этим делать: а) Преобразовать в число целого типа - int(); б) Преобразовать в число вещественного типа - float(); в) Оставить как строка; г) Расщепить строку на компоненты, указав разделитель - split() или rsplit() Например, когда вы желаете, что бы пользователь ввёл не одно число, а два, три ... И только после расщепления преобразуете каждую часть в свой тип. д) Преобразовать строку в объект типа bytes - bytes() ... и таких возможностей ещё ... Соответственно и при обратных преобразованиях. Число в строку - str(). И во всех таких преобразованиях надо ловить исключения (ошибки) и обрабатывать их под свои нужды. Например, пользователь вводит вещественное число, и в качестве разделителя целой части от дробной указал запятую. Ошибку преобразования можно отловить через инструкцию try ...
Как-то так, ...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Документации, учебники, уроки и полезные материалы по Python, PyQt, PySide | pompiduskus | Python | 4 | 22.07.2022 10:16 |
Начальный уровень Python. Функции - Python | YYYUUU | Python | 5 | 09.06.2017 12:09 |
сортировка списка методом пузырька на python но не выходит | asanaly serikbay | Помощь студентам | 0 | 01.01.2017 19:39 |
Доклад по Python. Сортировка. | Wunschpunsch | Python | 1 | 22.12.2014 17:12 |
Гномья сортировка. Язык Python. | Yuriy_Student | Python | 1 | 10.11.2013 09:47 |