Найти - Пользователи
Полная версия: Помогите советом!
Начало » Python для новичков » Помогите советом!
1
kennig
Только начал прикасаться к этому чуду, с программированием вообще еле знаком, поэтому можете судить строго, но помогите разобраться. Есть код:
# -*- coding: utf8 -*-
name = input(“Введите имя: ”)
age = input(“Сколько Вам лет? ”)
if age.isdigit():
age = int(age)
else:
print(“Буквы нельзя!”)
height = input(“Ваш рост? ”)
if height.isdigit():
height = int(height)
else:
print(“Буквы нельзя!”)
weight = input(“Ваш вес? ”)
if weight.isdigit():
weight = int(weight)
else:
print(“Буквы нельзя!”)
eyes = input(“Введите цвет глаз: ”)
teeth = input(“Введите цвет зубов: ”)
hair = input(“Что Вы скажете о своих волосах? ”)

print (u“Это напечатал %s” % name)
print (u“Его рост был вчера %d” % height)
print (u“Его вес %d, он совсем худой” % weight)
print (u“У него также %s глаза, %s зубы и я бы сказал о его волосах, что %s” % (eyes, teeth, hair))
print (u“Его счастливое число: %d” % (height+weight+age))
Все нравится, но охота, чтоб проверка на цифры шла постоянно а не один раз. То есть результат такой:
Сколько Вам лет? к
Буквы нельзя!
и программа выполняется дальше. Я так понимаю нужно засовывать цикл, который бы проверял такую логику: получаем строку от пользователя => отдаем проверке => проверка говорит “Буквы нельзя!”=> снова отдаем на получение.
Как сделать такую проверку? Я пятой точкой чую, что все просто, по сути надо проверять значение age while'ом, который каждый раз, как получит значение будет отдавать его на проверку, пока не получит число. Или же все еще проще и if здесь лишняя сущность?
uf4JaiD5
kennig
по сути надо проверять значение age while'ом, который каждый раз, как получит значение будет отдавать его на проверку, пока не получит число.
Да.
kennig
Или же все еще проще и if здесь лишняя сущность?
Ещё можно использовать не input, а другие функции, со встроенной возможностью проверить введённое значение. Но это не проще.
uf4JaiD5
Только надо не копипастить все проверки для каждой новой переменной:

 age = input("Сколько Вам лет? ")
if age.isdigit():
...
height = input("Ваш рост? ")
if height.isdigit():
...
weight = input("Ваш вес? ")
if weight.isdigit():

а засунуть их в отдельную функцию и вызывать её

 def input_int(text):
	while True:
		v = input(text)
		if v ...
	return v
age = input_int("Сколько Вам лет?")
height = input_int("Ваш рост?")
weight = input_int("Ваш вес?")
kennig
uf4JaiD5 спс, буду пробовать
kennig
uf4JaiD5
Только надо не копипастить все проверки для каждой новой переменной:
# -*- coding: utf8 -*-
name = input(“Введите имя: ”)
def input_int(text):
while True:
v = input(text)
if v.isdigit():
v = int(v)
else:
print(“Буквы нельзя!”)
return v
age = input_int (“Сколько Вам лет?”)
height = input_int (“Сколько Ваш рост?”)
weight = input_int (“Сколько Ваш вес?”)
eyes = input(“Введите цвет глаз: ”)
teeth = input(“Введите цвет зубов: ”)
hair = input(“Что Вы скажете о своих волосах? ”)

print (u“Это напечатал %s” % name)
print (u“Его рост был вчера %d” % height)
print (u“Его вес %d, он совсем худой” % weight)
print (u“У него также %s глаза, %s зубы и я бы сказал о его волосах, что %s” % (eyes, teeth, hair))
print (u“Его счастливое число: %d” % (height+weight+age))

Запустился, но как только доходит до(“Сколько Вам лет?”) если вводишь цифры, то просит ввести тоже значение, если буквы - переходит на следущее, но фактически он хавает буквенное значение и естесс-но валится в ошибку мол в 18-й строчке буквенное значение
uf4JaiD5
kennig
цикл дальше Сколько Вам лет? не уходит, что бы я не вводил
А где указание “идти дальше”? Его нет.
 def input_int(text):
	while True:
		v = input(text)
		if v.isdigit():
			v = int(v)
			break
		else:
			print("Буквы нельзя!")
	return v
При отправке сообщения код программы лучше оформлять как код:
 [code python]
код программы
[/code]
Тогда он будет оставаться читаемым.
marvellik
 def input_int(text):
    while True:
        v = input(text)
        if v.isdigit():
            return int(v)
        print('Буквы нельзя!')
        
name = input('Введите имя: ')    
age = input_int("Сколько Вам лет? ")
height = input_int("Ваш рост? ")
weight = input_int("Ваш вес? ")
eyes = input('Введите цвет глаз: ')
teeth = input('Введите цвет зубов: ')
hair = input('Что Вы скажете о своих волосах? ')
print (u'Это напечатал %s' % name)
print (u'Его рост был вчера %d' % height)
print (u'Его вес %d, он совсем худой' % weight)
print (u'У него также %s глаза, %s зубы и я бы сказал о его волосах, что %s' % (eyes, teeth, hair))
print (u'Его счастливое число: %d' % (height+weight+age))
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