Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 30, 2019 11:48:12

Ravil
Зарегистрирован: 2019-11-13
Сообщения: 2
Репутация: +  1  -
Профиль   Отправить e-mail  

Можно ли это сделать красивее?

 def sum(a, b):
    '''
    Return sum "a" and "b"
    according to types "a" and "b"  (int or float).
    If "a" or "b" types (str),
    then gluing "a" and "b"
    '''
    try:
        a = int(a)
    except  ValueError:
        try:
            a = float(a)
        except  ValueError:
            a = str(a)
            b = str(b)
            return a+b
    try:
        b = int(b)
    except  ValueError:
        try:
            b = float(b)
        except  ValueError:
            a = str(a)
            b = str(b)
    return a+b
Вывод должен быть такой:

Введите первое значение: 1
Введите второе значение: 1
Сумма значений равна: 2

Введите первое значение: 1.1
Введите второе значение: 1
Сумма значений равна: 2.1

Введите первое значение: 1
Введите второе значение: 1.1
Сумма значений равна: 2.1

Введите первое значение: 1.1
Введите второе значение: 1.1
Сумма значений равна: 2.2

Введите первое значение: j
Введите второе значение: 1
Сумма значений равна: j1

Введите первое значение: 1
Введите второе значение: j
Сумма значений равна: 1j

Введите первое значение: 1.1
Введите второе значение: j
Сумма значений равна: 1.1j

Введите первое значение: j
Введите второе значение: 1.1
Сумма значений равна: j1.1

Введите первое значение: j
Введите второе значение: j
Сумма значений равна: jj

Отредактировано Ravil (Ноя. 30, 2019 11:49:11)

Офлайн

#2 Ноя. 30, 2019 15:31:43

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Можно ли это сделать красивее?

У вас не описано что должно получиться. Пока непонятно чем вас не устроил код:

 def sum(a, b):
      return a+b
если надо чтобы типы были именно int float str можно проверить напрямую type(a) in (int,str,float)

по поводу “according to types”
 >>> type("1")
<class 'str'>
>>> type(1)
<class 'int'>
>>> type(1.1)
<class 'float'>
>>> type("1.1")
<class 'str'>



Отредактировано doza_and (Ноя. 30, 2019 15:35:16)

Офлайн

#3 Ноя. 30, 2019 16:23:32

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Можно ли это сделать красивее?

Ravilа что у вас на вход может повдавться? если там строки то какой смысл в этих строках:

a = str(a)
b = str(b)
если все что угодно(int, float, str) тогда вот это a = int(a) гарантировано сделает из float int и например при таких входных данных a=1.5 b = 2.5 сумма a+b будет 3.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version