以浮动格式输入无法正确解析

时间:2017-09-21 00:29:26

标签: python

我为我的Python课程练习了一个简短的程序,用于计算所提供质量的牛顿重量。

到目前为止,我有这个

    public void ProcessRequest(HttpContext context)
    {
        //What do I do here?
    }

它在某种程度上确实有效。除了它只接受输入的整数。因此输入300个工作,但输入300.x只返回输入提示。

gravity = 9.8

while True:
    mass = float(input('Please enter mass of object (in kg): '))
    if mass not in range (100, 501):
        if mass < 100:
            print ('Input too low.')
        elif mass > 500:
            print ('Input too high.')
    else :
        break

weight = mass * gravity

print ('the weight of your object is',weight,'newtons.')

我哪里错了?我指定质量输入应转换为浮点数,重力变量设置为浮点数。

我能想到的唯一一件事(就像我写这篇文章时那样来到我身边)是因为我没有使用浮点数作为范围或者&lt; &GT;检查,所以它的错误并返回到提示,但是并没有这样说,因为我从未为该特定情况设置消息。

3 个答案:

答案 0 :(得分:3)

add_filter( 'woocommerce_checkout_fields' , 'override_billing_checkout_fields', 20, 1 ); function override_billing_checkout_fields( $fields ) { $fields['billing']['billing_phone']['placeholder'] = 'Telefon'; $fields['billing']['billing_email']['placeholder'] = 'Email'; return $fields; } 并不意味着数学区间;它检查该间隔中的整数之一(因为这是add_filter('woocommerce_default_address_fields', 'override_default_address_checkout_fields', 20, 1); function override_default_address_checkout_fields( $address_fields ) { $address_fields['first_name']['placeholder'] = 'Fornavn'; $address_fields['last_name']['placeholder'] = 'Efternavn'; $address_fields['address_1']['placeholder'] = 'Adresse'; $address_fields['state']['placeholder'] = 'Stat'; $address_fields['postcode']['placeholder'] = 'Postnummer'; $address_fields['city']['placeholder'] = 'By'; return $address_fields; } 返回的内容)。使用x not in range(a,b)的{​​{1}}参数无济于事;它不允许它们,因为它产生离散的结果(并且存在陷阱,涉及浮点数学的不谨慎)。试试range,这是Python支持的一个很好的标准数学语法(但在其他一些语言中)。

答案 1 :(得分:1)

范围为您提​​供类似于数字列表的内容,因此当您运行第if mass not in range (100, 501):行时,您实际上正在检查mass中是否有[100, 101, ... , 500]。这仅涵盖整数,因此不起作用。

相反,只需使用代码中已有的比较:

gravity = 9.8

while True:
    mass = float(input('Please enter mass of object (in kg): '))
    if mass < 100:
        print ('Input too low.')
    elif mass > 500:
        print ('Input too high.')
    else :
        break

weight = mass * gravity

print ('the weight of your object is',weight,'newtons.')

答案 2 :(得分:1)

你的问题是你有一个浮点数,但你的测试是否在整数的范围内。这适用于float是精确值的情况:

Please enter mass of object (in kg):  100.0
('the weight of your object is', 980.0000000000001, 'newtons.')

但是当它有小数时失败。您必须将输入直接与值进行比较:

if not 100 <= mass < 501: # range is exclusive.

但是,您已经在代码中检查了这一点,因此不需要上述内容:

mass = float(input('Please enter mass of object (in kg): '))
if mass < 100:
    print ('Input too low.')
elif mass > 500:
    print ('Input too high.')
else:
    break