строка в python с циклом while и исключением - PullRequest
0 голосов
/ 22 октября 2018

Привет, я новичок в программировании на Python!Это мой код:

while True:
    try:
        x=raw_input("Please enter a word: ")
        break
    except ValueError:
        print( "Sorry it is not a word. try again")

Основная цель этого кода - проверить ввод.Если ввод является строкой, чем OK, но когда ввод является целым числом, это ошибка.Моя проблема в том, что код с целочисленным форматом тоже, я не получаю сообщение об ошибке.Можете ли вы помочь мне, где ошибка?

Ответы [ 3 ]

0 голосов
/ 22 октября 2018

Для проверки вы можете использовать метод input (), а затем принять соответствующее решение.

[iahmad@ijaz001 ~]$ python2.7
Python 2.7.15 (default, May  9 2018, 11:32:33) 
[GCC 7.3.1 20180130 (Red Hat 7.3.1-2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

>>> x=input()
'hi'
>>> type(x)
<type 'str'>

>>> x=input()
10
>>> 
>>> type(x)
<type 'int'>
>>> 

[iahmad@ijaz001 ~]$ python3.6
Python 3.6.5 (default, Apr  4 2018, 15:09:05) 
[GCC 7.3.1 20180130 (Red Hat 7.3.1-2)] on linux
Type "help", "copyright", "credits" or "license" for more information.

>>> x=eval(input())
'hi'
>>> 
>>> type(x)
<class 'str'>

>>> 
>>> x=eval(input())
10
>>> 
>>> type(x)
<class 'int'> 
0 голосов
/ 22 октября 2018

Если вам нужно вызвать исключение, только когда вход содержит одну или несколько цифр, вы можете попробовать:

x = str(raw_input('Please enter your message: '))

if any( i.isdigit() for i in x ):
     raise Exception("Input contains digits, therefore it is not a word")

Однако я предполагаю, что вы также хотите вызвать исключение, когда вход является чем-токак "hel $ o" - специальные символы также должны быть исключены -.В этом случае вы должны попытаться использовать некоторые регулярные выражения.

0 голосов
/ 22 октября 2018

Вы можете использовать метод .isdigit (), чтобы проверить, содержит ли строка только цифры, например.

if x.isdigit():
    raise Exception

Существует также метод .isalpha () для проверки, является ли строка буквенной.

...