在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项目中有多个模块/文件,我编写单元测试使用unittest.结构是这样的,我有生产模块module_A.py和module_B.py一个目录(比如说myproject/production)和相应的测试文件test_module_A.py和test_module_B.py兄弟目录(比方说myproject/tests).
现在我已经coverage.py安装并希望运行与项目相关的所有测试(即所有.py带有目录前缀test_的tests文件),并接收覆盖率报告,显示所有生产模块(module_A.py和module_B.py)的覆盖范围.
我想通过从myproject/tests目录运行以下命令可以做到这一点:
coverage erasecoverage run -a --source myproject.production test_module_A.pycoverage run -a --source myproject.production test_module_B.pycoverage 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
我正在尝试使用 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) 我有适用于 Windows 版本的便携式 Git,并从不同机器上的 USB 记忆棒运行它。我注意到当我使用 Git Bash 时,它会将 bash 历史记录保存在默认用户文件夹中,即C:/Users/[username]/.bash_history. 这对我没有好处。我想将它设置为自定义目录(在 U 盘上)。
(我怎样才能做到这一点?
在实现了最简单的样板版本的 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)
确实将按钮的背景变成黑色,但箭头仍然不可见。
python ×3
html ×2
bash ×1
bootstrap-4 ×1
coverage.py ×1
css ×1
git ×1
jquery ×1
jquery-ui ×1
portability ×1
unit-testing ×1