小编mhl*_*ter的帖子

为什么浮点数不准确?

为什么有些数字在存储为浮点数时会失去准确性?

例如,十进制数9.2可以精确地表示为两个十进制整数(92/10)的比率,两者都可以用二进制(0b1011100/0b1010)精确表示.但是,存储为浮点数的相同比率永远不会完全等于9.2:

32-bit "single precision" float: 9.19999980926513671875
64-bit "double precision" float: 9.199999999999999289457264239899814128875732421875
Run Code Online (Sandbox Code Playgroud)

这样一个看似简单的数字如何在64位内存中表达"太大" ?

language-agnostic floating-point precision

181
推荐指数
4
解决办法
3万
查看次数

python urllib2会自动解压缩从网页获取的gzip数据吗?

我正在使用

 data=urllib2.urlopen(url).read()
Run Code Online (Sandbox Code Playgroud)

我想知道:

  1. 如何判断URL中的数据是否被gzip压缩?

  2. 如果数据被压缩,urllib2会自动解压缩数据吗?数据总是一个字符串吗?

python gzip urllib2

69
推荐指数
3
解决办法
3万
查看次数

多字符串格式

给定ints 的字典,我正在尝试使用每个数字格式化字符串,以及项目的复数形式.

样本输入dict:

data = {'tree': 1, 'bush': 2, 'flower': 3, 'cactus': 0}
Run Code Online (Sandbox Code Playgroud)

样本输出str:

'My garden has 1 tree, 2 bushes, 3 flowers, and 0 cacti'
Run Code Online (Sandbox Code Playgroud)

它需要使用任意格式的字符串.

我提出的最佳解决方案是PluralItem存储两个属性的类n(原始值),s('s'如果是复数''则为字符串,否则为空字符串).对不同的复数方法进行了分类

class PluralItem(object):
    def __init__(self, num):
        self.n = num
        self._get_s()
    def _get_s(self):
        self.s = '' if self.n == 1 else 's'

class PluralES(PluralItem):
    def _get_s(self):
        self.s = 's' if self.n == 1 else 'es'

class PluralI(PluralItem):
    def …
Run Code Online (Sandbox Code Playgroud)

python string customization string-formatting

22
推荐指数
4
解决办法
2万
查看次数

我可以使用别名从python脚本执行程序

我几乎是python脚本的新手,所以请原谅任何愚蠢的问题,但任何人都可以给予的任何帮助将非常感激.

我正在尝试编写一个python脚本供其他人使用,在其中我需要调用一个我不会总是知道路径的程序.为了解决这个问题,我要求用户提供程序的路径,这将有效,但我不希望用户每次运行脚本时都必须提供路径,所以我一直在尝试设置bash通过将脚本添加到〜/ .profile和〜/ .bashrc文件来实现别名.

然后我可以使用别名从交互式bash shell运行程序,但是当脚本尝试运行它时,我收到"找不到命令"错误...

我已经尝试重新获取.bashrc文件并使用"shopt -s expand_aliases"命令而没有运气.

我的〜/ .bashrc看起来像这样:

alias nuke='/Applications/Nuke6.2v4/Nuke6.2v4.app/Contents/MacOS/Nuke6.2v4'
Run Code Online (Sandbox Code Playgroud)

这段脚本看起来像这样:

os.system('source .bashrc')
os.system('shopt -s expand_aliases')
os.system('nuke -x scriptPath')
Run Code Online (Sandbox Code Playgroud)

但是一旦脚本达到这一点,它就会返回:

sh: nuke: command not found
Run Code Online (Sandbox Code Playgroud)

我做错了什么或者是否有另外一种方法可以永久存储程序的路径?

python unix bash alias nuke

10
推荐指数
2
解决办法
1万
查看次数

在Python中动态创建对象

我为什么需要

class DummyObject(object):
    pass
Run Code Online (Sandbox Code Playgroud)

为了要做

dummy = DummyObject()
dummy.foo = 42
Run Code Online (Sandbox Code Playgroud)

为什么这在Python中不合法?

dummy = object()
dummy.foo = 42
Run Code Online (Sandbox Code Playgroud)

这给出了错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'foo'
Run Code Online (Sandbox Code Playgroud)

python

6
推荐指数
0
解决办法
959
查看次数

用背景图像保存画布

我有一个画布的背景图像,并在画布上添加了一些基本元素.现在我想用画布样式的背景图像保存画布(在.png中).

尝试:

var canvas = document.getElementById("mycanvas");
var img    = canvas.toDataURL("image/png");
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有保存画布的背景图像.有出路吗?

javascript css html5 canvas

5
推荐指数
2
解决办法
7985
查看次数

二进制/十六进制浮点输入

为什么基数10只允许小数点?为什么以下引发语法错误?

0b1011101.1101
Run Code Online (Sandbox Code Playgroud)

我打字的号码有些含糊不清吗?看起来没有可能的数字,字符串可以表示除了93.8125

同样的问题也适用于其他基地:

0x5d.d
Run Code Online (Sandbox Code Playgroud)

我可以用一个相当简单的函数来编程:

def base_float(number_string, base):
    n = number_string.split('.')
    number = int(n[0], base)
    if len(n) > 1 and len(n[1]):
        frac_part = float(int(n[1], base)) / base**len(n[1])
        if number < 0:
            frac_part = -frac_part
        number += frac_part
    return number
Run Code Online (Sandbox Code Playgroud)

它给了我预期的代表性:

>>> base_float('0b1011101.1101', 2)
93.8125
Run Code Online (Sandbox Code Playgroud)

int接受任意基数,但没有小数点,并float接受小数点但没有任意基数.为什么?

python floating-point numbers syntax-error python-2.7

5
推荐指数
1
解决办法
382
查看次数

Python:将print函数作为参数发送

我的教授已经提到可以将print这样的函数作为参数传递,但是当我尝试实际实现它时,我得到语法错误.这是我在这里失踪的小事吗?

 def goTime(sequence, action):
    for element in sequence:
       action(element)

 def main():
    print("Testing Begins")
    test = list ( range( 0 , 20, 2) ) 
    goTime(test, print)
    print("Testing Complete")
Run Code Online (Sandbox Code Playgroud)

运行以下命令后,我收到此语法错误:

goTime(test, print)
                 ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

如果我定义自己的使用print的函数,它的工作原理如下:

def printy(element):
   print(element)

def goTime(sequence, action):
   for element in sequence:
      action(element)

def main():
   print("Testing Begins")
   test = list ( range( 0 , 20, 2) ) 
   goTime(test, printy)
   print("Testing Complete")
Run Code Online (Sandbox Code Playgroud)

python

5
推荐指数
1
解决办法
1432
查看次数

jquery height animate()不起作用

我刚刚创建了这个:jsfiddle.net/MWzDe/ ,

JS:

$('button').click(function () {
  if ($('ul').height = 0) {
    $('ul').animate({'height':'100%'},'slow');
  } else {
    $('ul').animate({'height': 0},'slow');
  }});
Run Code Online (Sandbox Code Playgroud)

我需要向上/向下滑动'ul'标签,而不是'真正'消失它.代码有什么问题?还没有成功.谢谢.

html css jquery jquery-animate

4
推荐指数
1
解决办法
1040
查看次数

如何在Scala或Java中解码Base64字符串?

我有一个在Base64中编码的字符串:

eJx9xEERACAIBMBKJyKDcTzR_hEsgOxjAcBQFVVNvi3qEsrRnWXwbhHOmzWnctPHPVkPu-4vBQ==
Run Code Online (Sandbox Code Playgroud)

如何用Scala语言解码它?

我试着用:

val bytes1 = new sun.misc.BASE64Decoder().decodeBuffer(compressed_code_string)
Run Code Online (Sandbox Code Playgroud)

但是当我将字节数组与我在Python语言中生成的正确数组进行比较时,就会出现错误.这是我在python中使用的命令:

import base64
base64.urlsafe_b64decode(compressed_code_string)
Run Code Online (Sandbox Code Playgroud)

Scala中的字节数组是:

(120, -100, 125, -60, 65, 17, 0, 32, 8, 4, -64, 74, 39, 34, -125, 113, 60, -47, -2, 17, 44, -128, -20, 99, 1, -64, 80, 21, 85, 77, -66, 45, -22, 18, -54, -47, -99, 101, -16, 110, 17, -50, -101, 53, -89, 114, -45, -57, 61, 89, 15, -69, -2, 47, 5)

而在python中生成的是:

(120, -100, 125, -60, 65, 17, 0, 32, 8, 4, …

python java base64 scala decoding

4
推荐指数
2
解决办法
6913
查看次数