Fin*_*inn 1 python shell input command-line-interface
我正在尝试从python获取一个数字作为CLI输入.有效输入应该是int或float,我需要维护类型.因此验证int并返回float不起作用.
这是我能够想到的最好的东西,并不是那么好.
def is_valid(n):
try:
if '.' in n: return float(n)
return int(n)
except ValueError:
print "try again"
def num_input(s):
n = raw_input(s)
while is_valid(n) is None:
n = raw_input(s)
return is_valid(n)
valid_num = num_input("Enter a valid number: ")
Run Code Online (Sandbox Code Playgroud)
显然这不是最好的方法.
使用for循环来尝试所有转换,我添加了复杂类型用于演示:
def is_valid(n):
for t in (int, float, complex):
try:
return t(n)
except ValueError:
pass
raise ValueError("invalid number %s" % n)
print is_valid("10")
print is_valid("10.0")
print is_valid("1+3.0j")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |