-
31 October 2020
Информатика
- Автор: s201141181s
Питон! 70 баллов! Напишите программу, которая возвращает сумму 2 чисел. Если один из аргументов не является числом (целым или вещественным), функция должна вернуть строку:
"1st argument is not a number"
"2nd argument is not a number"
"all arguments are not a numbers"-
-
-
31 October 2020
- Ответ оставил: csharp
Решение "в лоб": на логических конструкциях.
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))
-
-
- НЕ НАШЛИ ОТВЕТ?
Если вас не устраивает ответ или его нет, то попробуйте воспользоваться поиском на сайте и найти похожие ответы по предмету школьной программы: информатика.
На сегодняшний день (18.08.2026) наш сайт содержит 109576 вопросов, по теме: информатика. Возможно среди них вы найдете подходящий ответ на свой вопрос. -
Нажимая на кнопку "Ответить на вопрос", я даю согласие на обработку персональных данных
Ответить на вопрос
