Найти - Пользователи
Полная версия: Можно ли это сделать красивее?
Начало » Python для новичков » Можно ли это сделать красивее?
1
Ravil
 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
doza_and
У вас не описано что должно получиться. Пока непонятно чем вас не устроил код:
 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'>
PEHDOM
Ravilа что у вас на вход может повдавться? если там строки то какой смысл в этих строках:
a = str(a)
b = str(b)
если все что угодно(int, float, str) тогда вот это a = int(a) гарантировано сделает из float int и например при таких входных данных a=1.5 b = 2.5 сумма a+b будет 3.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB