2017-07-25 31 views
0
import math 

#get base 
inputOK = False 
while not inputOK: 
    base = input('Enter base:') 
    if type(base) == type(1.0): inputOK = True 
    else: print('Enter, Base must be a floating point number.') 

输入基数:1.0输入Base必须是浮点数。使用浮动时的输出不正确

我输入1.0时无法得到正确答案。它总是输出基地必须是一个浮点数。我想变为True并退出循环。我的计划出了什么问题。

+1

'input'返回'str'对象,也可以使用'isinstance(...,浮)' –

+0

类型(基本)==类型的结果( 1.0)是真的,我认为是循环,但为什么程序执行其他步骤? – Sunner

+0

在给定的例子中,它不能是'True' –

回答

1
  • input返回str对象,所以我们需要转换到手动浮动,
  • 我们使用isinstance进行类型检查(如果需要)。

EAFP我们可以写

# get base 
inputOK = False 
while not inputOK: 
    try: 
     # user can pass 'inf', 'nan', no error will be raised 
     # should we check this cases? 
     base = float(input('Enter base:')) 
    except ValueError: 
     print('Base must be an integer or floating point number.') 
    else: 
     inputOK = True 
+0

感谢您的代码之后,请阅读第一条评论。 – Sunner