Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2016, 22:56   #1
Cyboredis
Новичок
Джуниор
 
Регистрация: 24.06.2016
Сообщений: 4
По умолчанию Python. Функция Input(), проблема с типами данных

Совсем недавно начал изучать программирование. Начал изучение с питона. Выучил пару операторов и решил для закрепления написать простенькую программу, решающую квадратные уравнения.
Программа просит ввести значение коэффициентов:
a=int(input())
b=int(input())
c=int(input())
И вот тут у меня вопрос : как избавиться от ошибки, если пользователь напишет не число, а какое-нибудь слово или букву?
Cyboredis вне форума Ответить с цитированием
Старый 24.06.2016, 23:35   #2
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Вариантов просто уйма.

Вот как вариант

PHP код:

# -*- coding: utf-8 -*-

num_a raw_input("input number (1): "); 
num_b raw_input("input number (2): "); 
num_c raw_input("input number (3): "); 

try:

    
num_a intnum_a ); 
    
num_b intnum_b ); 
    
num_c intnum_c ); 

except Exception as _error:
    
    
#print("ERROR: "+str(_error));
    
print("ERROR: must be a number");
    exit();

print( 
"result: "+strnum_a num_b num_c ) ); 
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 24.06.2016, 23:56   #3
Cyboredis
Новичок
Джуниор
 
Регистрация: 24.06.2016
Сообщений: 4
По умолчанию

Цитата:
Сообщение от pompiduskus Посмотреть сообщение
Вариантов просто уйма.

Вот как вариант

PHP код:

# -*- coding: utf-8 -*-

num_a raw_input("input number (1): "); 
num_b raw_input("input number (2): "); 
num_c raw_input("input number (3): "); 

try:

    
num_a intnum_a ); 
    
num_b intnum_b ); 
    
num_c intnum_c ); 

except Exception as _error:
    
    
#print("ERROR: "+str(_error));
    
print("ERROR: must be a number");
    exit();

print( 
"result: "+strnum_a num_b num_c ) ); 
Так это же не питон
Cyboredis вне форума Ответить с цитированием
Старый 25.06.2016, 03:56   #4
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Как не питон ? Мы вообще про один язык говорим ?
Я про вот этот https://www.python.org/
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 25.06.2016, 09:32   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Засмущало raw_ ?

input -ввод в версии v 2.7
raw_input - ввод в версии v 3.0
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 25.06.2016, 10:33   #6
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Если разница в том что сказал Aleksandr H.. То все верно он подметил.

Добавлю чуть-чуть.

В Python 2.7.9 работает как raw_input(); так и input();
Но если считать "xxx" строку через input(); то получим.

Код:
NameError: name 'xxx' is not defined
В то время как raw_input(); спокойно прочитает строку.
А вот если в Python 3.[0|2] вызвать raw_input(); то получим

Код:
>>> raw_input()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'raw_input' is not defined
Я все еще по старинке юзаю 2.7.9, хватает с головок.
Только если очень много чего подвязано в чужих библиотекам/модулях, тогда уже некуда деваться
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 25.06.2016, 21:16   #7
Cyboredis
Новичок
Джуниор
 
Регистрация: 24.06.2016
Сообщений: 4
По умолчанию

Цитата:
Сообщение от pompiduskus Посмотреть сообщение
Вариантов просто уйма.

Вот как вариант

PHP код:

# -*- coding: utf-8 -*-

num_a raw_input("input number (1): "); 
num_b raw_input("input number (2): "); 
num_c raw_input("input number (3): "); 

try:

    
num_a intnum_a ); 
    
num_b intnum_b ); 
    
num_c intnum_c ); 

except Exception as _error:
    
    
#print("ERROR: "+str(_error));
    
print("ERROR: must be a number");
    exit();

print( 
"result: "+strnum_a num_b num_c ) ); 
Да, спасибо. Я просто не знаю ещё таких слов.
try меняет тип?
except Exception as _error - такого тоже не знаю. Просто думал, можно с помощью простого if else эту проблему решить. Продолжу обучение, ещё раз спасибо )
Cyboredis вне форума Ответить с цитированием
Старый 25.06.2016, 21:18   #8
Cyboredis
Новичок
Джуниор
 
Регистрация: 24.06.2016
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Засмущало raw_ ?

input -ввод в версии v 2.7
raw_input - ввод в версии v 3.0
У меня 3.5 и raw_input компилятор отказывается читать, пользуюсь input
Cyboredis вне форума Ответить с цитированием
Старый 25.06.2016, 21:28   #9
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

яж разжевал что на каких версиях пашет

.
PHP код:
try:

    
2/0#этот блок совит ошибку и не даст программе завершиться аварийно

except
    
pass
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal. Проблема с типами данных. vizi Помощь студентам 3 16.02.2013 18:09
Проблема с типами Hellgate Помощь студентам 2 14.11.2012 10:54
Проблема с типами Form_13 Помощь студентам 1 28.07.2011 16:41
проблема с типами Saya Свободное общение 0 27.04.2007 12:22