Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Python控制流:如果x在0.0001到0.0624之间?_Python 2.7_Numpy_Control Flow - Fatal编程技术网

Python 2.7 Python控制流:如果x在0.0001到0.0624之间?

Python 2.7 Python控制流:如果x在0.0001到0.0624之间?,python-2.7,numpy,control-flow,Python 2.7,Numpy,Control Flow,所以我要做的是编写一个程序,将克面粉转换成杯面粉,反之亦然 因为杯子的测量值只有1/8杯的间隔(即0.125、0.250…),我想让程序告诉用户什么测量值最合适,基于小数点,对于不擅长分数或小数的人来说。因此,如果答案返回一个从0001到0624杯的十进制值,程序将指示用户这大致等于杯的确切数量 或者,如果程序返回一个小数点在0.0625到0.1875杯之间的值,程序将指示用户该值大致等于x和1/8杯 例如,126克面粉等于1.008杯,那么程序会告诉用户这大约等于1杯。如果结果为1.150,用

所以我要做的是编写一个程序,将克面粉转换成杯面粉,反之亦然

因为杯子的测量值只有1/8杯的间隔(即0.125、0.250…),我想让程序告诉用户什么测量值最合适,基于小数点,对于不擅长分数或小数的人来说。因此,如果答案返回一个从
0001
0624
杯的十进制值,程序将指示用户这大致等于杯的确切数量

或者,如果程序返回一个小数点在0.0625到0.1875杯之间的值,程序将指示用户该值大致等于x和1/8杯

例如,126克面粉等于1.008杯,那么程序会告诉用户这大约等于1杯。如果结果为1.150,用户将被指示1杯和1/8杯是最合适的测量值

这是我写的,使用
numpy
我可以得到一个从0.0001到0.0624的数字范围;但是,我不知道如何在
if
语句中使用它

基本上,我想让程序做的是从数量中提取小数点,如果小数点落在某个区间(即0.0001到0.0624),那么它将打印该区间的最佳度量值

这让我有点困惑,我不完全确定我是不是太难了,还是怎么了。这是我的代码,除了指定的部分外,所有代码都有效

print "Flour Conversion Program"

import numpy as np

flour_type   = raw_input( "What type of measurement do you want to use? " )
flour_recipe = raw_input( "What type of measurement does the recipe use? " )

if flour_type.lstrip() in ["Cups", "C", "cups", "cup", "c"] and flour_recipe.lstrip() in ["Grams", "Gram", "G", "g", "grams", "gram"]:

    grams_to_cups = float(0.008)
    flour_amount1 = raw_input("How many grams of flour does the recipe require? ")
    x = float(flour_amount1)
    print flour_amount1 + " grams of flour is " + str(x * grams_to_cups) + " cups."
    print str((x * grams_to_cups) % 1)

    #THIS IS THE PIECE OF CODE, I DON'T KNOW.
    if str((x * grams_to_cups) % 1).lstring() in str(np.arrange(0.0001, 0.0624, 0.0001)): 
    #THIS IS THE PIECE OF CODE, I DON'T KNOW.

        print str(x * grams_to_cups) + " is roughly " + str((x * grams_to_cups)-((x * grams_to_cups) % 1)) + " cups"

    else: 
        pass

else:
print "Invalid input"
如果我告诉我的代码打印((x*grams-to-cups)%1)它只打印我想要的小数,如果我使用
np.arrange(0.0001,0.0624,0.0001)
它列出了所有正确的值,但我不知道如何设置它,如果我的
((x*grams-to-cups)%1)
是这些值之一
np.arrange(0.0001,0.0624,0.0001)
向用户打印内容

我知道这个问题很长,但我昨天学了python,所以我还是个新手,能把事情弄清楚,任何提示都将不胜感激

谢谢。

恶魔隐藏在匹配的“in”-构造函数中:
计算机以几种不同的方式表示浮点数,其中有些不“精确”,有些则是

>>> grams_to_cups = float( 0.008 )
>>> 200 * grams_to_cups
1.6
>>> ( 200 * grams_to_cups ) % 1
0.6000000000000001
>>>
>>> np.arange( 0.0001, 0.628, 0.0001 )
array([ 0.0001,  0.0002,  0.0003,  0.0004,  0.0005,  0.0006,  0.0007,
        0.0008,  0.0009,  0.001 ,  0.0011,  0.0012,  0.0013,  0.0014,
        0.0015,  0.0016,  0.0017,  0.0018,  0.0019,  0.002 ,  0.0021,
        0.0022,  0.0023,  0.0024,  0.0025,  0.0026,  0.0027,  0.0028,
        ...
        0.6
        ...  ])
只要看看你的
%
过程中数学部分的结果(不使用
str()
将数字转换为字符串),最后一个
1
在多次、多次
0
-s之后的简单地阻止匹配
np.arange()
>

Python帮助(参考)可以帮助您探索如何在需要时使用内置的
Decimal
数字来准确表示数字

python的许多令人愉快的特性之一是它能够检查对象:

   >>> str(( 200 * grams_to_cups ) % 1).__doc__
   str(object='') -> string
   Return a nice string representation of the object.
   If the argument is a string, the return value is the same object.

   >>> dir( str(( 200 * grams_to_cups ) % 1) ) ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__get slice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser',
   'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join',
   'ljust',
   'lower',
   'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', ' strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

这将帮助您解决一个小问题,即在代码中为对象调用的
.lstring()
方法无法理解对象,因为它没有实现此类方法:

>>> str(( 200 * grams_to_cups ) % 1).lstring()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'lstring'
>>str((200*克到杯)%1).lstring()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:“str”对象没有属性“lstring”
通过这种方式,您可以一步一步地验证构造,并在需要时采取纠正措施

希望您越来越喜欢python,Benscott,它可以并且将为您的后续项目带来很多功能。

魔鬼隐藏在匹配的“in”构造函数中:
计算机以几种不同的方式表示浮点数,其中有些不“精确”,有些则是

>>> grams_to_cups = float( 0.008 )
>>> 200 * grams_to_cups
1.6
>>> ( 200 * grams_to_cups ) % 1
0.6000000000000001
>>>
>>> np.arange( 0.0001, 0.628, 0.0001 )
array([ 0.0001,  0.0002,  0.0003,  0.0004,  0.0005,  0.0006,  0.0007,
        0.0008,  0.0009,  0.001 ,  0.0011,  0.0012,  0.0013,  0.0014,
        0.0015,  0.0016,  0.0017,  0.0018,  0.0019,  0.002 ,  0.0021,
        0.0022,  0.0023,  0.0024,  0.0025,  0.0026,  0.0027,  0.0028,
        ...
        0.6
        ...  ])
只要看看你的
%
过程中数学部分的结果(不使用
str()
将数字转换为字符串),最后一个
1
在多次、多次
0
-s之后的简单地阻止匹配
np.arange()
>

Python帮助(参考)可以帮助您探索如何在需要时使用内置的
Decimal
数字来准确表示数字

python的许多令人愉快的特性之一是它能够检查对象:

   >>> str(( 200 * grams_to_cups ) % 1).__doc__
   str(object='') -> string
   Return a nice string representation of the object.
   If the argument is a string, the return value is the same object.

   >>> dir( str(( 200 * grams_to_cups ) % 1) ) ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__get slice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser',
   'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join',
   'ljust',
   'lower',
   'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', ' strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

这将帮助您解决一个小问题,即在代码中为对象调用的
.lstring()
方法无法理解对象,因为它没有实现此类方法:

>>> str(( 200 * grams_to_cups ) % 1).lstring()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'lstring'
>>str((200*克到杯)%1).lstring()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:“str”对象没有属性“lstring”
通过这种方式,您可以一步一步地验证构造,并在需要时采取纠正措施


希望您越来越喜欢python,Benscott,它可以并且将为您的后续项目带来很多功能。

如果我理解正确,编写条件的方法是:

if 0.001 < x * grams_to_cups < 0.0624:
如果0.001
如果我正确理解了问题,编写条件的方法是:

if 0.001 < x * grams_to_cups < 0.0624:
如果0.001