小编ham*_*474的帖子

TypeError:'float'对象不可迭代

我在Windows 7上使用python 3.2.2,我正在尝试创建一个接受7个数字的程序,然后告诉用户有多少是正数,有多少是负数,有多少是零.这是我到目前为止所得到的:

count=7
for i in count:
    num = float(input("Type a number, any number:"))
    if num == 0:
        zero+=1
    elif num > 0:
        positive+=1
    elif num < 0:
        negative+=1

print (positive)
print (negative)
print (zero)
Run Code Online (Sandbox Code Playgroud)

但是当我运行代码时,我得到了

TypeError: 'float' object is not iterable
Run Code Online (Sandbox Code Playgroud)

如果我用第3行替换第3行中的float我会遇到同样的问题,除非它说'int'对象不可迭代.我也尝试将count的值从7更改为7.0

现在我从python教程书中接受了这个挑战,他们没有答案,从我所知道的,我已经完成了他们提出的语法中的所有内容.

教程在这里(PDF)

python floating-point for-loop python-3.x

22
推荐指数
1
解决办法
15万
查看次数

开放式 CV 轮廓面积计算错误

我刚刚开始使用 OpenCV,我发现了 contourArea 函数的一些非常奇怪的行为。

看到这张图片。

原来的

它有三个不相连的区域,左侧是一组长笔划,顶部中心有一个点,最后是右侧的一个大方块。

当我运行我的函数时,我得到了这个结果

检测到的轮廓

Contour[0] Area: 221, Length: 70, Colour: Red 
Contour[1] Area: 13772, Length: 480, Colour: Green 
Contour[2] Area: 150, Length: 2370, Colour: Blue 
Run Code Online (Sandbox Code Playgroud)

虽然我还没有实际计算左侧部分的面积,但它似乎包含超过 150 个像素并且肯定比顶部中心的点具有更高的值,我会说该点应该能够适应左侧部分至少 10 次。广场的面积确实有效。

Square Area
width = 118
height = 116
118 * 116 = 13,688
Run Code Online (Sandbox Code Playgroud)

13,688 与 opencv 给出的面积(13,772)非常接近,差异可能代表我的测量误差。我手动计算了点的面积

Dot Area
width = 27
height = 6 
27*6 = 162
Run Code Online (Sandbox Code Playgroud)

与 opencv 所说的相差不远 (221)

contourArea 上OpenCV 文档页面读取它说它会为具有自相交的轮廓提供错误的结果。不太明白什么是自相交,我做了一个测试图像。

原图在这里

如您所见,左侧有一个矩形,中间有一个十字,另一个旋转了 45 度的十字。由于中心重叠,我希望十字架的面积略小于矩形面积的两倍。

轮廓图在这里

Contour[0] Area: 1805, Length: 423, …
Run Code Online (Sandbox Code Playgroud)

python opencv python-3.x

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

在firefox的newtabs中打开文件中的url

我正在使用 ubuntu 11.04,我正在尝试编写一个 bash 脚本,该脚本在一个新选项卡中打开每个文件中的 url,睡眠时间为 15 秒左右,该文件长 198 行,每行有一个 url。我有两种可能的方法来做到这一点

方法一

while read line; do 
    firefox -new-tab "$line"
    sleep 15
done < file
Run Code Online (Sandbox Code Playgroud)

方法二

for line in $(cat file); do
    firefox -new-tab "$line"
    sleep 15
done
Run Code Online (Sandbox Code Playgroud)

现在这两种方法似乎都给出了相同的结果,它使用第一行的 url 打开 firefox,并且在我关闭浏览器之前不会打开任何其他 url,在这种情况下,它会在第二行打开带有 url 的 firefox线等...

当我删除 sleep 命令时,我使用方法一取得了一些成功,它将尝试在不同的选项卡中一次打​​开所有 url

我从以下位置获得了方法一的代码:https : //unix.stackexchange.com/questions/17659/opening-multiple-urls-from-a-text-file-as-different-tabs-in-firefox-chrome

我从以下位置获得了方法二的代码:http : //whileonefork.blogspot.com/2011/02/bash-for-each-line-1-liners.html

url bash firefox for-loop while-loop

3
推荐指数
1
解决办法
5135
查看次数