Форум сайта python.su
Друзья, есть ли возможность в python проверить тип переменной следующим образом:
Есть задача, в которой нужно вводить числа и выяснить в конечном итоге, которое из них было наибольшим, какое наименьшим. Как только пользователь вводит done, цикл заканчивается, выглядит это все примерно так:
largest = None smallest = None while True: num = raw_input("Enter a number: ") if num == "done" : break if largest is None: largest = num if smallest is None: smallest = num if num > largest: largest = num elif num < smallest: smallest = num else: print "Invalid input" print "Maximum is", largest print "Minimum is", smallest
num = raw_input("Enter a number: ") if num == "done" : break
if num is str(): break #или print "Invalid input" # или if num = str() break #или print "Invalid input"
Офлайн
shakograw_input это всегда строка
Задать условие вроде
>>> a = raw_input() 2 >>> b = raw_input() 10 >>> a > b True
Офлайн
Разве? Ведь если задать таким образом:
float(raw_input())
Офлайн
import sys def f(s): while True: try: n = raw_input(s) return float(n) except ValueError: if n == "done": sys.exit() print "Error, enter numeric input"
Офлайн
>>> while True: ... s = raw_input("Enter a number: ") ... if s == "done": ... break ... try: ... num = int(s) ... except ValueError: ... print 'incorrect' ... continue ... print 'see', num ... Enter a number: a incorrect Enter a number: a incorrect Enter a number: 123 see 123 Enter a number: done >>>
Офлайн
Вот скорее, как у py.user.next, но всем спасибо тем не менее
Примерно вот что получилось в результате:
largest = None smallest = None while True: s = raw_input("Enter a number: ") if s == "done": break try: num = int(s) except ValueError: print 'Invalid input' continue if largest == None and smallest == None: largest = s smallest = s elif s < smallest: smallest = s elif s > largest: largest = s print "Maximum is", largest print "Minimum is", smallest
Офлайн
тут уже разбирали эту задачу
Офлайн
try: num = int(s) except ValueError: print 'Invalid input' continue
Отредактировано Rodegast (Июль 26, 2015 23:59:05)
Офлайн
Rodegast
Если числа целые, то вместо ловли ValueError лучше воспользоваться методом isdigit()
>>> '-5'.isdigit() False >>>
Офлайн
>>> '-5'.replace("-", "").isdigit() True >>>
Офлайн