可以在for循环中使用多个if语句吗?

时间:2017-09-29 09:45:40

标签: python-3.x loops for-loop if-statement

有没有办法让for循环使用一些多个条件迭代字符串列表?我正在尝试构建一个for循环,它应该迭代由字符串组成的列表的每个元素,但看起来我的for循环不会对我列表中每个可迭代的每个条件进行操作。

例如,

我有许多字符串,由于它们自己的内容而有所不同,例如(DNA有' T'而不是' U',RNA有' U'而不是' T'和未知(UNK)既没有'也没有' U'或其他任何字符。

输入为['tacaactgatcatt','aagggcagccugggau','gaaaaggcaggcg','guaccaguuu'.'acggggaccgac']

输出应该是DNA序列的类型:

Result: DNA, RNA, UNK, RNA, UNK

我认为我的错误是由于在for循环中滥用了中断句子,但我无法弄清楚如何修复它。

这是我到目前为止所得到的:

seq = list(input('Enter your sequence:').upper())

for obj in seq:
    if 'U' not in obj and 'T' in obj:
        print('Result: DNA')
        break
    if 'U' in obj and 'T' not in obj:
       print('Result: RNA')
       break  
    else:
        print('Result: UNK')

1 个答案:

答案 0 :(得分:0)

您正在使用中断语句停止迭代。

seq = ['tacaactgatcatt', 'aagggcagccugggau','gaaaaggcaggcg','guaccaguuu',
'acggggaccgac']

upp_seq = [obj.upper() for obj in seq]

result = []

for obj in upp_seq:
    if 'U' not in obj and 'T' in obj:
        result.append('DNA')
    elif 'U' in obj and 'T' not in obj:
        result.append('RNA')
    else:
        result.append('UNK')

print(result)

# print: ['DNA', 'RNA', 'UNK', 'RNA', 'UNK']