Skip to main content
 首页 » 编程设计

python之在保持类型的同时从 python 获取数字作为输入的最佳方法是什么

2025年05月04日14insus

我正在尝试从 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: ") 

显然这不是最好的方法。

请您参考如下方法:

使用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")