Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 12, 2014 17:18:05

MetalHead
От: Ленгер
Зарегистрирован: 2013-12-17
Сообщения: 88
Репутация: +  1  -
Профиль   Отправить e-mail  

Проверка типа переменных

Доброго вечера, товарищи. Не пойму как проверить типы переменных. Просвятите пожалуйста.

class Plus_to_price:
    def __init__(self, sale, percent):
        newsale = int(sale) / 100 * (100 + int(percent))
        print ("Новая цена равна -", int(newsale))    
class Main_function(Plus_to_price):
    def __init__(self):
        while True :
            sale = input("Введите нынешнюю цену -> ")
            percent = input("Введите процент, на который необходимо повысить цену -> ")
            if sale or percent == True:
                Plus_to_price.__init__(self, int(sale), int(percent))
            else:
                print ("Произошла ошибка! Вы не ввели данные!")
            print ("\n****************************\n")
main_function = Main_function()        

Офлайн

#2 Фев. 12, 2014 17:26:33

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Проверка типа переменных

>>> a = 5
>>> isinstance(a, int)
True
>>> isinstance(a, str)
False



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#3 Фев. 12, 2014 18:42:52

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Проверка типа переменных

>>> a = 5
>>> type(a) == int
True
>>>



Офлайн

#4 Фев. 12, 2014 18:47:41

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Проверка типа переменных

http://stackoverflow.com/questions/1549801/differences-between-isinstance-and-type-in-python

>>> a = 5
>>> isinstance(a, int)
True
>>> isinstance(a, object)
True
>>> type(a) == int
True
>>> type(a) == object
False
>>> 

Отредактировано PanovSergey (Фев. 12, 2014 18:52:45)

Офлайн

#5 Фев. 12, 2014 19:37:45

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Проверка типа переменных

 >>> type(a) == int
такая запись- имхо моветон.

Офлайн

#6 Фев. 12, 2014 19:56:14

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Проверка типа переменных

dimy44
такая запись- имхо моветон
подробнее? а то я вас не понимаю.

Офлайн

#7 Фев. 12, 2014 20:08:53

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Проверка типа переменных

Ну не по-питоняч'е это. Типа как if x == None вместо if x is None, isinstance да, норм.

Отредактировано dimy44 (Фев. 12, 2014 20:11:32)

Офлайн

#8 Фев. 13, 2014 06:32:43

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Проверка типа переменных

PanovSergey
подробнее? а то я вас не понимаю.
isinstance, в отличие от type
1. Принимает кортеж параметров
2. Поддерживает наследование

Плохо
print type(s) in [unicode, str]
Лучше
print isinstance(s, basestring)



Офлайн

#9 Фев. 13, 2014 07:15:44

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Проверка типа переменных

FishHook
isinstance, в отличие от type
Спасибо, Кэп!
Вы хоть сообщения прочитайте прежде чем ответить

Отредактировано PanovSergey (Фев. 13, 2014 07:21:10)

Офлайн

#10 Фев. 13, 2014 11:10:46

MetalHead
От: Ленгер
Зарегистрирован: 2013-12-17
Сообщения: 88
Репутация: +  1  -
Профиль   Отправить e-mail  

Проверка типа переменных

Ребят, проверять научился, но в Python 3, все данные в input() типа str, так вот мне необходимо сделать так чтобы, пропускало только цифры, как можно проверить цифры ли в переменной, пример предоставляю:

class Plus_to_price:
    def __init__(self, sale, percent):
        newsale = int(sale) / 100 * (100 + int(percent))
        print ("Новая цена равна -", int(newsale))
        
class Change_type(Plus_to_price):
    def __init__(self, sale, percent):
        if isinstance(sale, int) or isinstance(percent, int) is True: #здесь ясно что будет False
            Plus_to_price.__init__(self, int(sale), int(percent))
        else:
            print ("Ошибка")
            
class Main_function(Change_type):
    def __init__(self):
        while True :
            sale = input("Введите нынешнюю цену -> ")
            percent = input("Введите процент, на который необходимо повысить цену -> ")
            Change_type.__init__(self, sale, percent) # а если преобразовывать в int, то в метод попадают кривые переменные
main_function = Main_function()  

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version