Как запретить вводить числа?
Например:
name = input('Введите имя')
number = input('Введите номер')
Чтобы где переменная name там запретить вводить числа, а где переменная number запретить вводить слова.
Как запретить вводить числа?
Например:
name = input('Введите имя')
number = input('Введите номер')
Чтобы где переменная name там запретить вводить числа, а где переменная number запретить вводить слова.
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
import re
i=False
while not i: # Цикл будет выполняться пока i не станет True
name = input('Введите имя ')
if re.findall(r'\d', name)==[]: # re.findall(r'\d', name) вернет список из цифр которые используються в значении переменой name, если цифры не использовались вернеться пустой список
i=True
print("Данные введены верно")
else: print("Данные введены неверно, попробуйте еще раз")
i=False
while not i:
number = input('Введите номер ')
if re.findall(r'\D', number)==[]: # re.findall(r'\D', name) вернет список из букв которые используються в значении переменой number, если цифры не использовались вернеться пустой список
i=True
print("Данные введены верно")
else: print("Данные введены неверно, попробуйте еще раз")
re.findall(r'\d', name)==[], стоит использовать: not re.search(r'\d', name). 2- вместо while not i: ... i=True, можно просто while True: ... break написать
– jfs
Jul 04 '17 at 05:37
Проверяет на основе исключение TypeError, ValueError.
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
import sys, os
try:
number = int(input())
print(number,'является целым числом')
except (TypeError, ValueError):
print('Не является целым числом')
Так же можно проверить методом isinstance:
tryname = isinstance(name, str)
trynumber = isinstance(number, int)
if tryname == True:
print('ok')
elif tryname == False:
print('error')
if trynumber == True:
print('ok')
elif trynumber == False:
print('bad')
isinstance() здесь совершенно бесполезен (input() в Питоне 3 никогда int не вернёт)
– jfs
Jul 04 '17 at 05:31
name.isalpha() # содержит ли строка только буквы - bool
number.isnumeric() # содержит ли строка только числа - bool
''.join(s for s in name if not s.isnumeric()) # удалить все числа
''.join(s for s in number if s.isnumeric()) # удалить все не числа
isnumeric() для проверки того что число (принимаемое int()) было введено. Эта функция работает не так как вы думаете
– jfs
Jul 04 '17 at 05:28