追加元组

若昂葡萄牙

下午好,我在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)。每个元组的元素数是通过将元组的len除以每个元组数来分配的。

create_line将收到的每个字母追加到返回的列表中,条件是返回的每个列表的条件是每个列表最多numElems。

之后,create_key将所有列表(同时转换为元组)附加到返回它的元组的元组中。

所以我的问题是当我执行此代码时,如果字母=('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等)

感谢帮助!若昂

L3viathan

的结果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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章