Как проверить, является ли введенная пользователем строка числом (например, -1
, 0
, 1
и т.д.)?
user_input = input("Enter something:")
if type(user_input) == int:
print("Is a number")
else:
print("Not a number")
Вышеописанное не сработает, так как input
всегда возвращает строку.
Просто попробуйте преобразовать его в int, а затем выйдите из системы, если это не сработает.
try:
val = int(userInput)
except ValueError:
print("That's not an int!")
Очевидно, это не будет работать для отрицательных значений, но будет работать для положительных. Извините за это, я сам узнал об этом несколько часов назад, так как только недавно начал изучать Python.
Используйте isdigit()
if userinput.isdigit():
#do stuff
Я думаю, что вы'd быть ищу вот числового метода ()
(документация для питон3.х):
>>>a = '123'
>>>a.isnumeric()
true
Надеюсь, что это помогает
Отредактированы: Вы также можете использовать этот код ниже, чтобы выяснить, если его количество или отрицательный
import re
num_format = re.compile("^[\-]?[1-9][0-9]*\.?[0-9]+$")
isnumber = re.match(num_format,givennumber)
if isnumber:
print "given string is number"
вы также можете изменить формат ваших конкретных требований. Я вижу этот пост слишком поздно.но надеюсь, что это помогает другим лицам, которые ищу ответы :) . дайте мне знать, если чего-нибудь не так в данном коде.
Если вам конкретно нужен int или float, вы могли бы попробовать "не инт" или "не плавать на":
user_input = ''
while user_input is not int:
try:
user_input = int(input('Enter a number: '))
break
except ValueError:
print('Please enter a valid number: ')
print('You entered {}'.format(a))
Если вы должны работать только с ИНЦ, то наиболее элегантное решение, Я'видел это в ".isdigit () и" способ:
a = ''
while a.isdigit() == False:
a = input('Enter a number: ')
print('You entered {}'.format(a))
Я бы порекомендовал это, @karthik27, для отрицательных чисел
import re
num_format = re.compile(r'^\-?[1-9][0-9]*\.?[0-9]*')
А потом делай что хочешь с этим регулярным выражением, ПОИСКПОЗ(), метод findAll() и т. д.
самые элегантные решения будет предложено,
a=123
bool_a = a.isnumeric()
К сожалению, он не't работа для отрицательных чисел и для общих значений с плавающей точкой из. Если ваша точка зрения, чтобы проверить, если 'Это' это общее число, выходящее за пределы целых чисел I'd предлагает следующие один, который работает для всех типов float и число :). Вот такое испытание:
def isanumber(a):
try:
float(repr(a))
bool_a = True
except:
bool_a = False
return bool_a
a = 1 # integer
isanumber(a)
>>> True
a = -2.5982347892 # general float
isanumber(a)
>>> True
a = '1' # actually a string
isanumber(a)
>>> False
Я надеюсь, что вы найдете его полезным :)
Нормально работает для проверки, если вход является положительное целое число в определенном диапазоне
def checkIntValue():
'''Works fine for check if an **input** is
a positive Integer AND in a specific range'''
maxValue = 20
while True:
try:
intTarget = int(input('Your number ?'))
except ValueError:
continue
else:
if intTarget < 1 or intTarget > maxValue:
continue
else:
return (intTarget)
Вы можете использовать isdigit() метод для строк. В этом случае, как вы сказали, на входе всегда является строкой:
user_input = input("Enter something:")
if user_input.isdigit():
print("Is a number")
else:
print("Not a number")
естественно: [0, 1, 2 ... ∞]
В Python 2
it_is = unicode(user_input).isnumeric()
В Python 3
it_is = str(user_input).isnumeric()
число: [-∞, .., -2, -1, 0, 1, 2, ∞]
try:
int(user_input)
it_is = True
except ValueError:
it_is = False
поплавка: [-∞, .., -2, -1.0...1, -1, -0.0...1, 0, 0.0...1, ..., 1, 1.0...1, ..., ∞]
try:
float(user_input)
it_is = True
except ValueError:
it_is = False
Это решение будет принимать только целые числа и ничего, кроме чисел.
def is_number(s):
while s.isdigit() == False:
s = raw_input("Enter only numbers: ")
return int(s)
# Your program starts here
user_input = is_number(raw_input("Enter a number: "))
Почему бы не разделить входной сигнал на число? Этот способ работает со всем. Негативы, поплавки, поплавки и отрицательные. Также пробелы и ноль.
numList = [499, -486, 0.1255468, -0.21554, 'a', "this", "long string here", "455 street area", 0, ""]
for item in numList:
try:
print (item / 2) #You can divide by any number really, except zero
except:
print "Not A Number: " + item
Результат:
249
-243
0.0627734
-0.10777
Not A Number: a
Not A Number: this
Not A Number: long string here
Not A Number: 455 street area
0
Not A Number:
Это работает с любым числом, в том числе фракции:
import fractions
def isnumber(s):
try:
float(s)
return True
except ValueError:
try:
Fraction(s)
return True
except ValueError:
return False
Я знаю, что это довольно поздно, но его, чтобы помочь кому-нибудь, что пришлось потратить 6 часов, пытаясь выяснить это. (что я и сделала):
Это работает безотказно: (проверяет, если какую-то букву В вход/проверяет, является ли входной сигнал является либо целое число или с плавающей точкой)
a=(raw_input("Amount:"))
try:
int(a)
except ValueError:
try:
float(a)
except ValueError:
print "This is not a number"
a=0
if a==0:
a=0
else:
print a
#Do stuff
Я'ве использовали другой подход, я думал, что я'd доля. Начните с создания допустимый диапазон:
valid = [str(i) for i in range(-10,11)] # ["-10","-9...."10"]
Теперь попросите номер и если не в списке продолжать спрашивать:
p = input("Enter a number: ")
while p not in valid:
p = input("Not valid. Try to enter a number again: ")
Наконец, преобразовать в int (который будет работать, потому что список содержит только целые числа в виде строк:
p = int(p)
Вот простая функция, которая проверяет входные данные для int и ассортимент. Вот, возвращается 'правда' если входные данные целое число между 1-100, 'ложь' в противном случае
def validate(userInput):
try:
val = int(userInput)
if val > 0 and val < 101:
valid = True
else:
valid = False
except Exception:
valid = False
return valid
попробуйте это! он работал для меня, даже если я ввожу отрицательные числа.
def length(s):
return len(s)
s = input("Enter the String: ")
try:
if (type(int(s)))==int :
print("You input an integer")
except ValueError:
print("it is a string with length " + str(length(s)))
Я тоже сегодня утром столкнулся с проблемами с пользователи не могли ввести нецелые ответы на мой конкретный запрос целое.
Это было решение, которое в итоге работает хорошо для меня, чтобы заставить ответ я хотел:
player_number = 0
while player_number != 1 and player_number !=2:
player_number = raw_input("Are you Player 1 or 2? ")
try:
player_number = int(player_number)
except ValueError:
print "Please enter '1' or '2'..."
Я хотел бы получить исключение, прежде чем даже достигнув попробовать: заявление, когда я использовал
player_number = int(raw_input("Are you Player 1 or 2? ")
и пользователь вошел на "Дж" или любое другое нецелое характер. Это сработало лучше всего принимать его в качестве сырья, проверьте, чтобы увидеть, если это сырье может быть преобразован в целое число, а затем преобразовать его позже.
Вот самое простое решение:
a= input("Choose the option\n")
if(int(a)):
print (a);
else:
print("Try Again")