Форум сайта python.su
Только начал прикасаться к этому чуду, с программированием вообще еле знаком, поэтому можете судить строго, но помогите разобраться. Есть код:
# -*- 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 здесь лишняя сущность?
Отредактировано kennig (Янв. 14, 2019 21:54:53)
Офлайн
kennigДа.
по сути надо проверять значение age while'ом, который каждый раз, как получит значение будет отдавать его на проверку, пока не получит число.
kennigЕщё можно использовать не input, а другие функции, со встроенной возможностью проверить введённое значение. Но это не проще.
Или же все еще проще и if здесь лишняя сущность?
Офлайн
Только надо не копипастить все проверки для каждой новой переменной:
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("Ваш вес?")
Офлайн
uf4JaiD5 спс, буду пробовать
Офлайн
uf4JaiD5# -*- coding: utf8 -*-
Только надо не копипастить все проверки для каждой новой переменной:
Отредактировано kennig (Янв. 15, 2019 13:46:38)
Офлайн
kennigА где указание “идти дальше”? Его нет.
цикл дальше Сколько Вам лет? не уходит, что бы я не вводил
def input_int(text): while True: v = input(text) if v.isdigit(): v = int(v) break else: print("Буквы нельзя!") return v
[code python] код программы [/code]
Отредактировано uf4JaiD5 (Янв. 15, 2019 13:02:06)
Офлайн
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))
Офлайн