1

我正在尝试检查输入是单词还是数字。

var = input("var: ")

if isinstance(var, str):
    print "var = word"

else:
   print "var = number"

这是我想出的代码,但遗憾的是不起作用;我是python和一般编程的新手,所以我不知道很多命令,任何建议将不胜感激^^

4

5 回答 5

2

Did you try str.isdigit()? For example:

v = raw_input("input: ")

if v.isdigit():
    int(v)
    print "int"
else:
    print "string"
于 2015-02-12T20:12:42.893 回答
1

input()总是会为您返回一个字符串(str类型)。你可以用这个字符串做几件事来检查它是否是int

  1. 您可以尝试将该字符串转换为 int:

    var = input("var: ")
    try:
        var = int(var)
    except ValueError:
        print "var is a str"
    print "var is an int"
    
  2. 您可以使用正则表达式来检查字符串是否仅包含数字(如果您int是十进制,则对于其他基础,您必须使用适当的符号):

    import re
    var = input("var: ")
    if re.match(r'^\d+$', var):
        print "var is an int"
    else:
        print "var is a str"
    
于 2015-02-12T19:37:05.770 回答
0

要检查变量类型,您可以执行以下操作:

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

对于字符串:

>>> y = "hi"
>>> type(y)
<type 'str'>

使用isinstance

x = raw_input("var: ")
try:
    int(x)
except ValueError:
    print "string"
else: 
    print "int"
于 2015-02-12T19:27:59.300 回答
0

input()在将其交给您之前,将接受并评估您的意见。也就是说,如果用户输入exit(),您的应用程序将退出。从安全的角度来看,这是不希望的。你会想raw_input()改用。在这种情况下,您可以期望返回的值是一个字符串。

如果您仍想检查字符串内容是否可转换为(整数)数字,请遵循此处讨论的方法:

一个简短的大纲:试着把它转换成一个数字,看看它是否失败。

示例(未经测试):

value = raw_input()
try:
    int(value)
    print "it's an integer number"
except ValueError:
    print "it's a string"

以供参考:

请注意,input()函数的语义随着 Python 3 的变化而变化:

于 2015-02-12T19:38:18.513 回答
0

正如@paidhima 所说,该input函数将始终在 python 3.x 中返回一个字符串。例子:

Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.

>>> var = input("var: ")
var: 12
>>> var
'12'
>>>type(var)
<class 'str'>
>>> 

如果我执行以下操作:

>>> var = input("var: ")
var: aa
>>> var
'aa'
>>> type(var)
<class 'str'>
>>>

它们都是字符串,因为让程序决定它是否会给我们一个字符串或整数不是一个好主意,我们希望我们在程序中构建的逻辑来处理它。在 python3.x 你的例子是行不通的,但你可以试试这个:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

var = input('var: ')

# we try to conver the string that we got
# in to an intiger 
try:
    # if we can convert it we store it in the same
    # variable
    var = int(var)
except ValueError:
    # if we can't convert we will get 'ValueError'
    # and we just pass it 
    pass


# now we can use your code 
if isinstance(var, str):
    print("var = word")

else:
    print("var = number")
# notice the use of 'print()', in python3 the 'print is no longer 
# a statement, it's a function

现在回到使用 python2.x 的脚本。正如我上面所说,使用该函数不是一个好习惯input,您可以raw_input在 python2.x 中使用它,就像input在 python3.x 中一样。

我要再说一遍,因为我不想让你感到困惑:Python2.x:

input 
# evaluates the expression(the input ) and returns what
# can make from it, if it can make an integer it will make one
# if not it will keep it as a string

raw_input
# it will always return the expression(the input ) as a string for 
# security reasons and compatibility reasons

Python3.x

 input
 # it will always return the expression(the input ) as a string for 
 # security reasons and compatibility reasons

注意,在 python3.x 中没有raw_input.

Your code should work just fine, in python2.x, make sure you use the right python, and i hope this helped you in a way or another.

于 2015-02-12T19:51:54.357 回答