use*_*354 34 python variables python-2.7
我有一个有几个命令的应用程序.当您键入某个命令时,您必须输入有关某事/某人的其他信息.现在信息必须严格地是整数或字符串,具体取决于具体情况.
但是,无论你使用raw_input()输入Python是什么,实际上都是一个字符串,无论如何,更具体地说,我怎么会很快和没有尝试...除了看看变量是由数字还是字符组成?
Mar*_*ers 71
在我看来,你有两个选择:
只是尝试将其转换为int,但捕获异常:
try:
value = int(value)
except ValueError:
pass # it was a string, not an int.
Run Code Online (Sandbox Code Playgroud)
这就是Ask Forgiveness方法.
显式测试字符串中是否只有数字:
value.isdigit()
Run Code Online (Sandbox Code Playgroud)
str.isdigit()True仅当字符串中的所有字符都是数字(0- 9)时才返回.
的unicode/ Python的3 str型当量unicode.isdecimal()/ str.isdecimal(); 只有Unicode小数可以转换为整数,因为并非所有数字都有实际的整数值(例如,U + 00B2 SUPERSCRIPT 2是一个数字,但不是小数).
这通常称为Ask Permission方法,或Look Before You Leap.
后者将无法检测到所有有效的int()值,如空白和+和-也是允许的int()值.第一种形式将乐意接受' +10 '为数字,后者则不然.
如果您希望用户通常输入整数,请使用第一个表单.在这种情况下,要求宽恕而不是许可更容易(也更快).
Teh*_*ris 20
如果你想检查它是什么:
>>>isinstance(1,str)
False
>>>isinstance('stuff',str)
True
>>>isinstance(1,int)
True
>>>isinstance('stuff',int)
False
Run Code Online (Sandbox Code Playgroud)
如果你想从raw_input获取整数
>>>x=raw_input('enter thing:')
enter thing: 3
>>>try: x = int(x)
except: pass
>>>isinstance(x,int)
True
Run Code Online (Sandbox Code Playgroud)
如果给定的字符串只是一个或多个数字isdigit,则该str类型的方法返回Trueiff.如果不是,您知道该字符串应该被视为一个字符串.
| 归档时间: |
|
| 查看次数: |
226245 次 |
| 最近记录: |