В
Все
У
Українська література
Г
Геометрия
Д
Другие предметы
Э
Экономика
Г
География
О
ОБЖ
М
Математика
М
МХК
Х
Химия
Қ
Қазақ тiлi
Л
Литература
У
Українська мова
О
Обществознание
Ф
Физика
А
Английский язык
А
Алгебра
И
История
Б
Беларуская мова
Б
Биология
М
Музыка
П
Право
И
Информатика
П
Психология
В
Видео-ответы
Н
Немецкий язык
Ф
Французский язык
О
Окружающий мир
Р
Русский язык
Enot3106
Enot3106
12.12.2020 09:46 •  Информатика

Питон! Напишите программу, которая возвращает сумму 2 чисел. Если один из аргументов не является числом (целым или вещественным), функция должна вернуть строку: "1st argument is not a number"
"2nd argument is not a number"
"all arguments are not a numbers"

Ответ:
ZhenyaN123
ZhenyaN123
26.11.2020 21:14

Решение "в лоб": на логических конструкциях.

isInt(s) - целочисленное ли число в строке

isFloat(s) - вещественное ли число в строке

Стоит внести ясность в конструкции на строках 25,  27 и 28. Начнём  по порядку:

1. (int(a) if isIntA else float(a)) + (int(b) if isIntB else float(b)) - сумма результатов двух тернарных операторов, имеющих вид:

<результат при True> if <условие> else <результат при False>

Если перевести на русский язык: <перевод строки в целочисленное число>, если <в строке a целочисленное число>, иначе <перевод строки в вещественное число>. Аналогично с выражением после +.

2. isIntOrFloatA ^ isIntOrFloatB - логическая операция XOR, которая возвращает True только в двух случаях: когда только один из операторов равен True или False.

3. 1 if isIntOrFloatA == False else 2 - аналогичная первому выражению запись тернарного оператора: если isIntOrFloatA равняется False (если первый аргумент - не число), то выводим 1, иначе - 2.

Код:

def isInt(s):    try:          int(s)        return True    except ValueError:        return False def isFloat(s):    try:          float(s)        return True    except ValueError:        return False def sum(a, b):  isIntA = isInt(a)  isFloatA = isFloat(a)  isIntB = isInt(b)  isFloatB = isFloat(b)  isIntOrFloatA = isIntA or isFloatA  isIntOrFloatB = isIntB or isFloatB  if isIntOrFloatA and isIntOrFloatB:    return (int(a) if isIntA else float(a)) + (int(b) if isIntB else float(b))  else:    if isIntOrFloatA ^ isIntOrFloatB:      return "{}st argument is not a number".format(1 if isIntOrFloatA == False else 2)    else:      return "all arguments are not a numbers" a = input() b = input() print(sum(a, b))
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?