Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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值不正确<;及>;_Python_Floating Point - Fatal编程技术网

python值不正确<;及>;

python值不正确<;及>;,python,floating-point,Python,Floating Point,以下是我计算错误的代码。大约3倍于原始输入,它将执行值12最大值: 最大=num 浮动(最大) 如果num

以下是我计算错误的代码。大约3倍于原始输入,它将执行值12<4之类的操作。我添加了几个float命令,试图避免它在string和int方面出现问题。我对编码非常陌生

largest = None
smallest = None
while True:
    num = raw_input("Enter a number: ")
    if num == "done" : break
    try:
        float(num)
    except ValueError:
        print "Invalid input" 
        break
    float(num)
    if largest is None:
        largest = num
        float(largest)
    if smallest is None:
        smallest = num
        float(largest)
    if num > largest:
        largest = num
        float(largest)
    if num < smallest:
        smallest = num
        float(smallest)
    print num

print "Maximum", largest
print "Minimum", smallest
max=None
最小=无
尽管如此:
num=原始输入(“输入一个数字:”)
如果num==“完成”:中断
尝试:
浮点(num)
除值错误外:
打印“无效输入”
打破
浮点(num)
如果最大值为无:
最大=num
浮动(最大)
如果最小值为无:
最小=num
浮动(最大)
如果num>最大值:
最大=num
浮动(最大)
如果num<最小值:
最小=num
浮动(最小)
打印数
打印“最大”,最大
打印最小值

float(num)
计算
num
的浮点值,但不处理它;特别是,它不会更改
num
的值。您需要一个赋值来完成此操作。

在当前代码中,在将
num
转换为
float
后,您实际上从未将其赋值给任何对象

float(num)
相反,您需要在转换后重新分配
num

num = float(num)
如果不这样做(如在当前代码中),那么在执行比较时,您是在进行字符串比较,而不是数字比较

"12" < "4"   # True
“12”<“4”#正确

float
不会就地更改变量-它会返回一个强制转换值,您可以忽略该值,而不将其保存在任何位置。只需分配它,您就可以了:

try:
    num = float(num)
except ValueError:
    print "Invalid input" 
    break

if largest is None:
    largest = num
if smallest is None:
    smallest = num
if num > largest:
    largest = num
if num < smallest:
    smallest = num
print num
试试看:
num=浮点(num)
除值错误外:
打印“无效输入”
打破
如果最大值为无:
最大=num
如果最小值为无:
最小=num
如果num>最大值:
最大=num
如果num<最小值:
最小=num
打印数

您不会更改代码中num的值。键入“float(num)”实际上没有任何作用,因为它只是暂时将该变量转换为浮点数。要实际更改该值,我建议进行以下编辑

largest = None
smallest = None
while True:
    num = raw_input("Enter a number: ")
    if num == "done" : break
    try:
        float(num)
    except ValueError:
        print "Invalid input" 
        break
    num = float(num)
    if largest is None:
        largest = num
    if smallest is None:
        smallest = num
    if num > largest:
        largest = num
    if num < smallest:
        smallest = num
    print num

print "Maximum", largest
print "Minimum", smallest
max=None
最小=无
尽管如此:
num=原始输入(“输入一个数字:”)
如果num==“完成”:中断
尝试:
浮点(num)
除值错误外:
打印“无效输入”
打破
num=浮点(num)
如果最大值为无:
最大=num
如果最小值为无:
最小=num
如果num>最大值:
最大=num
如果num<最小值:
最小=num
打印数
打印“最大”,最大
打印最小值

什么是“做像值12<4这样的事情”呢?你不是在比较
12<4
;您也在比较
“12”<“4”
,只是说
浮点(最小)
不会改变
最小的
。您需要执行
最小=浮点(最小)
@zondo是正确的。在您的情况下,如果您只是将try块修改为
try:num=float(num)
,那么我认为您不必进行任何其他更改。只是您可以删除所有的float()调用。我认为您需要删除对float的初始转换,以便删除对答案的下一票,因为用户正在使用字符串“done”的输入。不过这是我最疯狂的猜测@是的!我才意识到。感谢您指出这一点。@Cyr1lfiggus如果Suever回答了您的问题,请将他们的答案标记为已接受(绿色支票)。非常感谢您的快速反馈!!