Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 7, 2010 17:09:45

tv.vldmr
От:
Зарегистрирован: 2010-12-04
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка данных после ввода

Доброе,
пишу маленькую первую программу. python изучаю 3-4 день, первый язык программирования для меня.

Столкнулся с проблемой …проверки введенных данных.

def commision :
moneybank = input ("Есть ли деньги в банке? 1 - ДА, 2 - Нет: ")
if moneybank == 2 :
moneynobank()
elif moneybank == 1:
moneyyesbank()
else type(moneybank) != int:
print "Вы ввели не корректные данные. Сделайте выбор заново."
print "================================================================"
commision()
Если вводить не правильные цифры - то проверка работает без проблем, но если ввести любую букву, то в ответ получаю:

NameError: name 'd' is not defined
Нужна помощь для реализации проверки введенных данных.

Спасибо!



Офлайн

#2 Дек. 7, 2010 17:55:22

Zzzz
От:
Зарегистрирован: 2010-12-07
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка данных после ввода

Попробуй так:

# -*- coding: utf-8 -*-
while 1:
try:
num = int(raw_input("Введите целое число:\n"))
break
except ValueError:
print "Вы ошиблись. Попробуйте снова."



Офлайн

#3 Дек. 7, 2010 18:02:03

tv.vldmr
От:
Зарегистрирован: 2010-12-04
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка данных после ввода

Zzzz
немного не понял, как должна выглядеть функция с таким кодом…

попробую Ваш вариант…



Офлайн

#4 Дек. 7, 2010 18:09:34

Zzzz
От:
Зарегистрирован: 2010-12-07
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка данных после ввода

Если убрать бесконечный цикл (while 1) и выход из него (break), будет выглядеть понятнее:

# -*- coding: utf-8 -*-
try:
num = int(raw_input("Введите целое число:\n"))
print num
except ValueError:
print "Вы ошиблись. Попробуйте снова."
но уже после первого неверно введённого символа программа будет завершать работу с сообщением “Вы ошиблись. Попробуйте снова.”
Бесконечный цикл позволяет пользователю вводить значение до тех пор, пока не будет введено верное не вызывая при это остановки программы.



Отредактировано (Дек. 7, 2010 18:10:08)

Офлайн

#5 Дек. 7, 2010 19:41:33

tv.vldmr
От:
Зарегистрирован: 2010-12-04
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка данных после ввода

Zzzz
ага, понял, получается придется чуток переделывать функцию в целом)



Офлайн

#6 Дек. 7, 2010 20:15:32

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

Проверка данных после ввода

def moneyyesbank():
print 'yes'

def moneynobank():
print 'no'

moneybank = 0
while moneybank not in (1, 2):
try:
moneybank = input ("Есть ли деньги в банке? 1 - ДА, 2 - Нет: ")
except NameError:
print "Вы ввели не корректные данные. Сделайте выбор заново."
print "================================================================"
continue
if moneybank == 1:
moneyyesbank()
elif moneybank == 2:
moneynobank()



Офлайн

#7 Дек. 7, 2010 21:54:45

tv.vldmr
От:
Зарегистрирован: 2010-12-04
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка данных после ввода

py.user.next
def moneyyesbank():
print 'yes'

def moneynobank():
print 'no'

moneybank = 0
while moneybank not in (1, 2):
try:
moneybank = input ("Есть ли деньги в банке? 1 - ДА, 2 - Нет: ")
except NameError:
print "Вы ввели не корректные данные. Сделайте выбор заново."
print "================================================================"
continue
if moneybank == 1:
moneyyesbank()
elif moneybank == 2:
moneynobank()
Спасибо большое ;-) Думал когда приеду домой самому попытаться сделать ;-) Но всё же, очень приятно!



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version