仅在满足if条件后运行for循环

时间:2017-03-21 13:11:47

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

我正在尝试制作一个非常简单的测试函数,首先检查用户输入是否是3的倍数,然后测试每个单独的字符以查看它们是否是有效字符。这是我的代码:

def is_dna(string):

    string.upper() 
    if(len(string) % 3 == 0):
        print("LENGTH CORRECT")
        for n in string:
            if(n == "A" or n == "T" or n == "C" or n == "G"):
                print("Valid")
            else:
                print("Invalid character")
                break
        return True
    else:
        print("Too many/little characters")
        return False

运行时,底部部分运行正常,如果使用了正确数量的字符,这也将成功打印调试“LENGTH CORRECT”字符串。问题是for循环不会初始化,我没有最模糊的原因。只测试循环显示它工作正常;这个功能出了什么问题?

3 个答案:

答案 0 :(得分:2)

简单修复 你只需要将string.upper()移入变量然后对变量

进行操作

已修复的代码

def is_dna(stri):
    string = stri.upper() 
    if(len(string) % 3 == 0):
        print("LENGTH CORRECT")
        for n in string:
            if(n == "A" or n == "T" or n == "C" or n == "G"):
                print("Valid")
            else:
                print("Invalid character")
                break
        return True
    else:
        print("Too many/little characters")
    return False
is_dna("ATCGCTATC") #this works and tests it perfectly

答案 1 :(得分:0)

string = string.upper() 

函数upper()只返回字符的大写字母,字符串self不会改变。

答案 2 :(得分:0)

你不需要循环,只需使用正则表达式:

import re

def is_dna(string)
    return re.match("([CAGT]{3})+", string.upper()) is not None