小编Joh*_*alt的帖子

Python:大型浮动如何自动变成*inf*?

在Python 3.6.2,Win10-x64上

我遇到过一些奇怪的事情并且无法解释.

在:

x = 10.0
for i in range(10):
    print(str(i) + " | " + str(x))
    x *= x
Run Code Online (Sandbox Code Playgroud)

日期:

0 | 10.0
1 | 100.0
2 | 10000.0
3 | 100000000.0
4 | 1e+16
5 | 1e+32
6 | 1.0000000000000002e+64
7 | 1.0000000000000003e+128
8 | 1.0000000000000005e+256
9 | inf
Run Code Online (Sandbox Code Playgroud)

它怎么变成了inf为什么不抛出异常?

如果我用例如*=最后一行替换**=它,那么通过第二次迭代它会升起OverflowError: (34, 'Result too large'),这是有意义的(因为它仅为10.000.000.000 ^ 10.000.000.000).

这是否意味着浮子有一种"软"限制 - 当超过时 - 将它们变成inf?如果是这样,那么限制是什么,无论算术运算如何都是一样的?这不意味着什么inf == this_limit + …

python

11
推荐指数
2
解决办法
901
查看次数

多个模块的Python单元测试覆盖率

我搜索了很长时间,令人惊讶地发现没有令人满意的答案.

我的Python项目中有多个模块/文件,我编写单元测试使用unittest.结构是这样的,我有生产模块module_A.pymodule_B.py一个目录(比如说myproject/production)和相应的测试文件test_module_A.pytest_module_B.py兄弟目录(比方说myproject/tests).

现在我已经coverage.py安装并希望运行与项目相关的所有测试(即所有.py带有目录前缀test_tests文件),并接收覆盖率报告,显示所有生产模块(module_A.pymodule_B.py)的覆盖范围.

我想通过从myproject/tests目录运行以下命令可以做到这一点:

  • coverage erase
  • coverage run -a --source myproject.production test_module_A.py
  • coverage run -a --source myproject.production test_module_B.py
  • coverage report

这给了我很好的表格,列出了我的所有生产模块及其覆盖结果.到现在为止还挺好.

但是我可以用一个命令来做到这一点吗?假设我想要在一份报告中包含2个或20个或200个测试,那么"手工"这样做似乎很荒谬.

必须有一种自动化方法,但我似乎无法找到它.当然shell脚本可能会这样做,但这是相当笨拙的.我在想类似的东西unittest discover,但是coverage.py这似乎没有用.

或者我能以某种方式使用coverage-API完成此操作吗?到目前为止,我没有运气.

.

解决方案:(信贷给Ned Batchelder先生)

myproject/tests目录运行:

coverage run --source myproject.production -m unittest discover && coverage report

一行,完全按需要做.

python unit-testing code-coverage coverage.py python-unittest

6
推荐指数
1
解决办法
3098
查看次数

用 Python 抓取雅虎财务损益表

我正在尝试使用 Python从雅虎财经的损益表中抓取数据。具体来说,假设我想要最新的Apple Net Income 数据

数据由一堆嵌套的 HTML 表格构成。我正在使用该requests模块来访问它并检索 HTML。

我正在使用BeautifulSoup 4来筛选 HTML 结构,但我不知道如何获得这个数字。

是使用 Firefox 进行分析的屏幕截图。

到目前为止我的代码:

from bs4 import BeautifulSoup
import requests

myurl = "https://finance.yahoo.com/q/is?s=AAPL&annual"
html = requests.get(myurl).content
soup = BeautifulSoup(html)
Run Code Online (Sandbox Code Playgroud)

我尝试使用

all_strong = soup.find_all("strong")
Run Code Online (Sandbox Code Playgroud)

然后得到第 17 个元素,它恰好是包含我想要的图形的元素,但这似乎很不优雅。像这样的东西:

all_strong[16].parent.next_sibling
...
Run Code Online (Sandbox Code Playgroud)

当然,目标是用于BeautifulSoup搜索我需要的数字的名称(在本例中为“净收入”),然后在 HTML 表的同一行中获取数字本身

我非常感谢有关如何解决此问题的任何想法,请记住,我想应用该解决方案从其他雅虎财经页面检索一堆其他数据。

解决方案/扩展:

低于@wilbur该解决方案的工作,我在扩大它能够得到的数值的任何可用的身影任何的财务页面(即损益表资产负债表现金流量表)对任何上市公司。我的功能如下:

def periodic_figure_values(soup, yahoo_figure):

    values = …
Run Code Online (Sandbox Code Playgroud)

html python beautifulsoup yahoo-finance

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

如何更改 .bash_history 位置(Windows 版 Git)

我有适用于 Windows 版本的便携式 Git,并从不同机器上的 USB 记忆棒运行它。我注意到当我使用 Git Bash 时,它会将 bash 历史记录保存在默认用户文件夹中,即C:/Users/[username]/.bash_history. 这对我没有好处。我想将它设置为自定义目录(在 U 盘上)。

(我怎样才能做到这一点?

git bash portability

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

为什么 jQuery UI Spinner 箭头按钮不显示?

在实现了最简单的样板版本的 jQuery UI Spinner Widget后,向上和向下箭头按钮没有显示。单击它们应该出现的位置会导致 Spinner 事件触发,并且数字会增加/减少,但没有任何按钮可见。

我在 SO 上发现了一些相关的(无用的)问题(这里更多,这里更少),还有 jQuery 论坛上的一个问题(这里)。最后一个线程提到了可能的引导程序冲突。

我在我的项目中同时使用 Bootstrap 和 jQuery (UI)。

示例 HTML

<input id="spinner" name="spinner">
Run Code Online (Sandbox Code Playgroud)

和 JavaScript

$( "#spinner" ).spinner({
  min: 0,
  step: 100000,
});
Run Code Online (Sandbox Code Playgroud)

没有什么花哨的,尽管除此之外还有一些自定义 CSS,显然。

尝试使用 jQuery UI 提供的 CSS 类进行样式设置没有帮助。做类似的事情

.ui-spinner-button {
  color: white !important;
  background: black;
}
Run Code Online (Sandbox Code Playgroud)

确实将按钮的背景变成黑色,但箭头仍然不可见。

html css jquery jquery-ui bootstrap-4

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