Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2018, 18:52   #1
Exalted
Пользователь
 
Регистрация: 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']


В чём проблема? Как решить?
Заранее спасибо!
Exalted вне форума Ответить с цитированием
Старый 28.08.2018, 18:59   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Дык минимум, максимум и сортировка строк, а не чисел
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.08.2018, 19:16   #3
Exalted
Пользователь
 
Регистрация: 27.08.2018
Сообщений: 31
По умолчанию

Хорошо, а как пофиксить? С помощью int? Подскажи пожалуйста!

Последний раз редактировалось Exalted; 28.08.2018 в 19:50.
Exalted вне форума Ответить с цитированием
Старый 28.08.2018, 20:32   #4
Exalted
Пользователь
 
Регистрация: 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']
Exalted вне форума Ответить с цитированием
Старый 28.08.2018, 20:38   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

список создай с числами, а не со строками
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.08.2018, 11:00   #6
Exalted
Пользователь
 
Регистрация: 27.08.2018
Сообщений: 31
По умолчанию

Всё, спасибо, я разобрался!
Exalted вне форума Ответить с цитированием
Старый 29.08.2018, 11:11   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Цитата:
Но ведь суть проги заключается в том, чтобы человек сам вводил числа.
Суть проги в тех. задании и его реализации программистом. Пользователь ведь может всё что угодно "отчебутить".
Не во всех языках программирования процедуры ввода и вывода выполняют операции преобразования строк в числа и наоборот.
Более того там, где такое преобразование реализовано, например в Паскале, это преобразование опирается на известный тип переменной.
Например, в Паскале:
Код:
var a: integer;
   b: real;
   s: string;
Тогда в теле программы можем написать:
Код:
Write('Введите целое, вещественное и строку);
readln(a, b, c);
И если пользователь перепутает, то будет выведена ошибка преобразования, которую программист должен был предусмотреть и обработать, что бы прога, того, не загнулась. Здесь проблема решается заданием параметров компиляции, при которых программист получит управление программой и сам решит что делать дальше. Например, попросить повторно ввести данные.
В Питоне переменные получаю свой тип при инициализации, и что вы хотели ввести в свои переменные ему, интерпретатору, неизвестно.
Процедура input() всегда вводит текстовую строку, с которой вы, как программист, поступаете по своему усмотрению. Например, преобразуете к целому или вещественному типу. При этом так же могут появляться ошибки из-за невнимательности пользователя. Для решения проблем, возникающих при преобразовании, используют try ....
Так что напишите:
Код:
num1 = int(input('Write first number: '))
и попробуйте ввести целое число, вещественное или какую либо строку.

Дополнение:
Цитата:
Всё, спасибо, я разобрался!
Вот и замечательно.
Как-то так, ...

Последний раз редактировалось ViktorR; 29.08.2018 в 11:13.
ViktorR вне форума Ответить с цитированием
Старый 29.08.2018, 11:44   #8
Exalted
Пользователь
 
Регистрация: 27.08.2018
Сообщений: 31
По умолчанию

Спасибо! Тоесть, если я преобразую строку в числа, я использую int. Когда наоборот - str. Я правильно понял?
Exalted вне форума Ответить с цитированием
Старый 29.08.2018, 13:20   #9
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Цитата:
То есть, если я преобразую строку в числа, я использую int. Когда наоборот - str
Числа ведь тоже разные бывают.
Важно: input() принимает символы и передаёт их как есть в переменную.
Вы выбираете что с этим делать:
а) Преобразовать в число целого типа - int();
б) Преобразовать в число вещественного типа - float();
в) Оставить как строка;
г) Расщепить строку на компоненты, указав разделитель - split() или rsplit()
Например, когда вы желаете, что бы пользователь ввёл не одно число, а два, три ... И только после расщепления преобразуете каждую часть в свой тип.
д) Преобразовать строку в объект типа bytes - bytes()
...
и таких возможностей ещё ...
Соответственно и при обратных преобразованиях. Число в строку - str().
И во всех таких преобразованиях надо ловить исключения (ошибки) и обрабатывать их под свои нужды.
Например, пользователь вводит вещественное число, и в качестве разделителя целой части от дробной указал запятую.
Ошибку преобразования можно отловить через инструкцию try ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Документации, учебники, уроки и полезные материалы по 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