首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >for循环中的If语句

for循环中的If语句
EN

Stack Overflow用户
提问于 2013-06-11 01:10:24
回答 2查看 157关注 0票数 0

我在for循环中遇到了一些if语句的问题。下面是我的代码:

代码语言:javascript
复制
import numpy as np

mv = []
mb = []
mbv = []
M = []
for i in range (0,25):
    mv.append(10.1 - 2.5 * np.log10(fv[i]/1220000))
    mb.append(11.0 - 2.5 * np.log10(fb[i]/339368))
    mbv.append(mb[i]-mv[i])
    if ( 0.00 < mbv[i] < 0.05):
        M.append(1.1)
    if ( 0.05 < mbv[i] < 0.1):
        M.append(1.8)
    if ( 0.1 < mbv[i] < 0.2):
        M.append(2.2)
    else:
        M.append(0)
    print i+1, mbv[i], M[i]

这是我得到的结果:

代码语言:javascript
复制
1 0.117517744922 2.2

2 0.105291760392 2.2

3 0.0414704330434 1.1

4 0.709631736921 0

5 0.0634562921955 0

6 0.9 1.8

7 0.123732441181 0

8 0.332213182737 0

9 0.0783116509167 2.2

10 0.109696428387 0

11 0.812457966075 1.8

12 0.0796972381532 0

13 0.0933833026562 2.2

14 0.0448112197058 0

15 0.107871295045 1.8

16 0.072180255058 0

17 0.134980217798 1.8

18 0.453454266409 0

19 0.0498332192697 1.1

20 0.141914194517 0

21 0.0712870748016 2.2

22 0.622521992135 1.8

23 0.176515236738 0

24 0.607814524935 2.2

25 0.0521329729172 0

0

如你所见,数字5的mbv为0.0634,这应该给出的M是1.8,但它得到的却是0。

提前感谢您的帮助

EN

回答 2

Stack Overflow用户

发布于 2013-06-11 01:12:56

您需要使用elif,否则,如果mbv[i]不在0.10.2之间,则始终会追加0

代码语言:javascript
复制
    if ( 0.00 <= mbv[i] < 0.05):
        M.append(1.1)
    elif ( 0.05 <= mbv[i] < 0.1):
        M.append(1.8)
    elif ( 0.1 <= mbv[i] < 0.2):
        M.append(2.2)
    else:
        M.append(0)

mbv[i]小于0.1时,您当前的代码会导致向M添加多个值,首先将根据值添加1.11.8,然后if ( 0.1 < mbv[i] < 0.2)将失败,并输入else块以附加0

另外,正如wagregg的答案中所指出的,您应该确保使用<=覆盖边缘情况,以便如果某个值恰好是0.050.1,则可以输入适当的块,而不是放到else块中。

票数 2
EN

Stack Overflow用户

发布于 2013-06-11 01:12:26

您应该使用< to <=来恰好涵盖5的情况。

代码语言:javascript
复制
if ( 0.05 <= mbv[i] < 0.1):
    M.append(1.8)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17029278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档