我写了一个小脚本,以便返回一个'字符列表'从值列表中:
值列表:
11
11
14
6
6
14
我的剧本:
# -*- coding:utf-8 -*-
import numpy as np
data = np.loadtxt('/Users/valentinjungbluth/Desktop/produit.txt',
dtype = int)
taille = len(data)
for j in range (0, taille) :
if data[j] == 1 or 2 or 3 or 11 or 12 or 13 :
print 'cotisation'
if data[j] == 14 :
print 'donation'
else :
print 'part'
我需要得到的东西:
'cotisation'
'cotisation'
'donation'
'part'
'part'
'donation'
我得到了什么:
cotisation
part
cotisation
part
cotisation
donation
我不知道我在哪里犯了错误.. 如果有人可以阅读我的剧本,也许可以纠正他?
谢谢
答案 0 :(得分:1)
尝试:
scala> Stream.continually(array).flatten
res0: scala.collection.immutable.Stream[Int] = Stream(1, ?)
scala> val array = Array(1, 2, 3, 4)
array: Array[Int] = Array(1, 2, 3, 4)
scala> val stream = Stream.continually(array).flatten
stream: scala.collection.immutable.Stream[Int] = Stream(1, ?)
scala> stream.take(10).foreach(println)
1
2
3
4
1
2
3
4
1
2
答案 1 :(得分:1)
这里有几个问题:
if x == 1 or 2 or 3 or ...
没有达到预期效果。每个子句都是独立评估的,因此python不知道你暗示if x == 1 or x == 2 or x == 3
等等。它反而把它解释为if x == 1
或if 2
或if 3
...... if 2
之类的内容实际上是python中的一个感性if语句,基本上等于询问if True
(所有非零整数值都具有True的“真实性”)。因此,您的陈述实际上等同于if data[j] == 1 or True or True or True or True
,后者缩减为if True
。换句话说,无论值如何,始终满足条件。你的意思是:
if data[j] == 1 or data[j] == 2 or data[j] == 3 or data[j] == 11 ...
目前归结为伪代码中的以下内容:
if some condition:
print 'something'
now regardless of the first condition, if some other disjoint condition:
print 'something else'
otherwise:
print 'does not match other condition'
换句话说,通过使用两个ifs,else
所属的第二个if块被视为完全独立于第一个if。因此,满足第一个条件的情况也也满足else,这听起来不是你想要的,因为每个字符应该只打印一次。如果您希望它是3个不相交的情况,则需要使用elif
代替所有它被视为单个块的一部分:
E.g。
if condition:
print 'something'
elif other condition:
print 'something else'
else:
print 'does not match EITHER of the two above condtions'
答案 2 :(得分:0)
Scimonster在代码中指出了你的第一个问题,你需要elif for second。
第二个问题是或部分,你的if条件正在解释为
if (data[j] == 1) or 2 or 3 or 11 or 12 or 13
你可以修改它们,如下所示
if data[j] in [1, 2, 3, 11, 12, 13] :
print 'cotisation'
elif data[j] == 14 :
print 'donation'
else :
print 'part'
答案 3 :(得分:-1)
if data[j] == 1 or 2 or 3 or 11 or 12 or 13 :
print 'cotisation'
if data[j] == 14 :
print 'donation'
else :
print 'part'
此处有两个单独的if
,其中一个有else
。它们应该一起流动,所以第二个应该是elif
。