【问题标题】:Can multiple if statements be used in a for loop?可以在for循环中使用多个if语句吗?
【发布时间】:2018-03-11 04:51:30
【问题描述】:

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

例如,

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

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

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

Result: DNA, RNA, UNK, RNA, UNK

我认为我的错误是由于在 for 循环中误用了 break 语句,但我不知道如何解决它。

这是我目前得到的:

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')

【问题讨论】:

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


    【解决方案1】:

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

    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']
    

    【讨论】:

    • 我通过避免break语句得到的是另一种迭代,因为它返回多个结果,它应该返回的只是符合条件的字符串类型,可能是因为它没有迭代列表中的每个对象。
    • 您要打印列表中每个元素的结果吗?
    • 是的,但只是在一个打印句子中,例如结果:DNA、RNA、UNK、RNA、UNK。
    • 将结果存储在列表中怎么样?检查更新答案。
    • 是的,它看起来像工作,但我现在尝试修复这个条件,因为列表中的第一个可迭代应该是 DNA,第二个是 RNA。这可能是因为else这句话的原因,我认为是为了囤积
    猜你喜欢
    • 2014-02-20
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 2022-01-21
    • 2020-03-26
    • 2018-05-27
    • 2013-08-18
    相关资源
    最近更新 更多