Python 附加元组的元组

Python 附加元组的元组,python,python-3.x,Python,Python 3.x,下午好, 我有一个关于python作业的问题 这几乎是正确的,但最后一部分我不明白 def create_line(letters,x,numElems): sizeofLetters=len(letters) another_list = [] i=0 while(i!=numElems): if(i+x*numElems==sizeofLetters): break another_list.appen

下午好, 我有一个关于python作业的问题 这几乎是正确的,但最后一部分我不明白

def create_line(letters,x,numElems):
    sizeofLetters=len(letters)
    another_list = []
    i=0

    while(i!=numElems):
        if(i+x*numElems==sizeofLetters):
            break
        another_list.append(letters[i+x*numElems])
        i +=1

    return another_list

def create_key(letters):
    sizeofList = len(letters) 
    conjLetters = []
    x=0
    i=0

    raiz = sqrt(sizeofList)
    numTuples=raiz

    if(isinstance(raiz,float)==True):
        numTuples = int(raiz)+1
        raiz = int(raiz)+1

    numElems=sizeofList/raiz


    while(x!=numTuples-1):
        line = tuple(create_line(letters,x,numElems))
        x+=1        
        conjLetters.append(line)
    return tuple(conjLetters)
create_key接收一个字符元组(例如:('a','B','C','D')。将其转换为一个元组。元组数是大小的平方根,总是四舍五入(4,1=5)。每个元组的元素数通过除以每个元组的元组数来分配

create_line将收到的每封信追加到一个列表中,该列表返回该信,条件是每个列表返回的信最多有个numlems

之后create_键将所有列表(同时转换为一个元组)附加到返回它的元组的元组中

所以我的问题是当我做这个代码时,如果字母=('A','B','C','D','E','F','G','H','I','J','L','M','N','O','p','Q','R','S','T','U','V','X','Z','

我的输出应该是(('A','B','C','D','E'),('F','G','H','I','J'),('L','M','N','O'),('p','Q','R','S','T'),('U','V','X','Z',' 如果没有最后一个元组,则只有根为int时才会发生这种情况(例如25,36等)

谢谢你的帮助!
João

sqrt的结果将始终是一个浮点数(如果是25,则为
5.0
)。这就是为什么您总是在整数表示法中添加1,如果数字是整数,则会错误地表示数字。相反,请使用
math.ceil
,它将返回下一个最高的整数,如果它已经是整数,则返回相同的数:

from math import sqrt, ceil

...

def create_key(letters):
    sizeofList = len(letters) 
    conjLetters = []
    x = 0
    i = 0

    raiz = ceil(sqrt(sizeofList))
    numTuples = raiz

    numElems = sizeofList // raiz  # Python 3 compatibility


    while x != numTuples-1:
        line = tuple(create_line(letters, x, numElems))
        x += 1        
        conjLetters.append(line)
    return tuple(conjLetters)