np.set_printoptions(current_printoptions) typeError : precision must be an integer

Ada yang bisa kasih masukan supaya hasilnya tidak error? saya juga sudah mencoba memodifnya tapi tidak menemukan titik terangnya, kesalahan pada np.set_printoptions(current_printoptions) . Terimakasih

import numpy as np

class RubikCube:

    def __init__(self,size):

        self.size = size

        self.A = np.zeros((size,size), dtype = np.int8)

        self.B = np.zeros((size,size), dtype = np.int8)

        self.C = np.zeros((size,size), dtype = np.int8)

        self.D = np.zeros((size,size), dtype = np.int8)

        self.E = np.zeros((size,size), dtype = np.int8)

        self.F = np.zeros((size,size), dtype = np.int8)

        self.faces = [self.A, self.B, self.C, self.D, self.E, self.F]

    def __str__(self):

        current_printoptions = np.get_printoptions()

        np.set_printoptions(formatter={'str': '{: 3d}'.format})

        output = ""

        indent = " " * (1 + self.size * 4)

        for row in self.A:

            output += indent + str(row) + "\n"

        for zipped_row in zip(self.B, self.C, self.D, self.E):

            for row in zipped_row:

                output += str(row)

            output += "\n"

        for row in self.F:

            output += indent + str(row) + "\n"

        np.set_printoptions(current_printoptions)

        return output

    def init_arange(self):

        i = 0

        for face in self.faces:

            for y in range(self.size):

                for x in range(self.size):

                    face[y][x] = i

                    i += 1

    def init_plainteks(self, teks):

        i = 0

        for face in self.faces:

            for y in range(self.size):

                for x in range(self.size):

                    if len(teks)>i:

                        face[y][x] = ord(teks[i])

                    else:

                        face[y][x] = 37

                        i += 1

    def encrypt(self,key):

        for move in key.split('-'):

            if move[0] == 'R':

                self.rotate_row(int(move[1]))

            if move[0] == 'C':

                self.rotate_column(int(move[1]))

            if move[0] == 'L':

                self.rotate_level(int(move[1]))

    def decrypt(self,key):

        rev_moves = key.split('-')

        new_moves = list()

        for i in range(1, len(rev_moves) + 1):

            new_moves.append(rev_moves[-1 * i])

        for move in new_moves:

            if move[0] == 'R':

                self.rev_rotate_row(int(move[1]))

            if move[0] == 'C':

                self.rev_rotate_column(int(move[1]))

            if move[0] == 'L':

                self.rev_rotate_level(int(move[1]))

    def rotate_row(self, n):

        # B -> C -> D -> E -> B

        if n in (1,2,3):

            for i in range(n):

                tmpB = np.copy(self.B[-1])

                self.B[-1] = self.E[-1]

                self.E[-1] = self.D[-1]

                self.D[-1] = self.C[-1]

                self.C[-1] = tmpB

                # rotate F by - 90*n

                self.F = np.rot90(self.F, 4-n)

        elif n in (4,5,6):

            for i in range(n-3):

                tmpB = np.copy(selef.B[:1])

                self.B[:1] = self.E[:1]

                self.E[:1] = self.D[:1]

                self.D[:1] = self.C[:1]

                self.C[:1] = tmpB

                # rotate A by 90 derajat*n

                self.A = np.rot90(self.A, n-3)

    def rev_rotate_row(self,n):

        # B -> C -> D -> E -> B

        if n in (1,2,3):

            for i in range(n):

                tmpB = np.copy(self.B[-1])

                self.B[-1] = self.C[-1]

                self.C[-1] = self.D[-1]

                self.D[-1] = self.E[-1]

                self.E[-1] = tmpB

                # rotate F by -90*n

                self.F = np.rot90(self.F, n-4)

        elif n in (4,5,6):

            for i in range(n-3):

                tmpB = np.copy(self.B[-1])

                self.B[:1] = self.C[:1]

                self.C[:1] = self.D[:1]

                self.D[:1] = self.E[:1]

                self.E[:1] = tmpB

                # rotate A by 90*n

                self.A = np.rot90(self.A, 3-n)

    def rotate_column(self, n):

        # A -> E -> F -> C -> A

        if n in (1,2,3):

            for i in range(n):

                tmpA = np.copy(self.A[:,-1])

                self.A[:,-1] = self.C[:,-1]

                self.C[:,-1] = self.F[:,-1]

                self.F[:,-1] = np.flip(self.E[:,0])

                self.E[:,0] = np.flip(tmpA)

                # rotate D by -90*n

                self.D = np.rot90(self.D, 4-n)

        elif n in (4,5,6):

            for i in range(n-3):

                tmpA = np.copy(self.A[:,:1])

                self.A[:,:1] = self.C[:,:1]

                self.C[:,:1] = self.F[:,:1]

                self.F[:,:1] = np.flip(self.E[:,-1:])

                self.E[:,-1:] = np.flip(tmpA)

                # rotate B by 90*n

                self.B = np.rot90(self.B, n-3)

    def rev_rotate_column(self,n):

        # A -> E -> F -> C -> A

        if n in (1,2,3):

            for i in range(n):

                tmpA = np.copy(self.A[:,-1])

                self.A[:,-1] = self.E[:,-1]

                self.E[:,-1] = self.F[:,-1]

                self.F[:,-1] = np.flip(self.C[:,0])

                self.C[:,0] = np.flip(tmpA)

                # rotate D by -90*n

                self.D = np.rot90(self.D, 4-n)

        elif n in (4,5,6):

            for i in range(n-3):

                tmpA = np.copy(self.A[:,:1])

                self.A[:,:1] = self.E[:,:1]

                self.E[:,:1] = self.F[:,:1]

                self.F[:,:1] = np.flip(self.C[:,-1:])

                self.C[:,-1:] = np.flip(tmpA)

                # rotate B by 90*n

                self.B = np.rot90(self.B, n-3)

    def rotate_level(self,n):

        # A -> B -> F -> D -> A

        if n in range(n):

            for i in range(n):

                tmpA = np.copy(self.A[0])

                self.A[0] = self.D[:,-1]

                self.D[:,-1] = np.flip(self.F[-1])

                self.F[-1] = self.B[:,0]

                self.B[:,0] = np.flip(tmpA)

                # rotate E by -90*n

                self.E = np.rot90(self.E, 4-n)

        elif n in (4,5,6):

            for i in range(n-3):

                tmpA = np.copy(self.A[1:])

                self.A[-1:] = np.rot90(self.D[:,:1])

                self.D[:,:1] = np.rot90(self.F[:1])

                self.F[:1] = np.rot90(self.B[:,-1:])

                self.B[:,1:] = np.rot90(tmpA)

                # rotate C by 90*n

                self.C = np.rot90(self.C, n-3)

    def rev_rotate_level(self,n):

        # A -> B -> F -> D -> A

        if n in (1,2,3):

            for i in range(n):

                tmpA = np.copy(self.A[-1])

                self.A[0] = self.B[:,-1]

                self.B[:, -1] = np.flip(self.F[-1])

                self.F[-1] = self.D[:,0]

                self.D[:,0] = np.flip(tmpA)

                # rotate E by -90*n

                self.E = np.rot90(self.E, n-4)

        elif n in (4,5,6):

            for i in range(n-3):

                tmpA = np.copy(self.A[-1:])

                self.A[-1:] = np.rot90(self.B[:,:1])

                self.B[:,:1] = np.rot90(self.F[:1])

                self.F[:1] = np.rot90(self.D[:,-1:])

                self.D[:,-1:] = np.rot90(tmpA)

                # rotate C by 90*n

                self.C = np.rot90(self.C, 3-n)

if __name__ == "__main__":

    msg = input("Message: ")

rubikcube = RubikCube(size=3)

rubikcube.init_plainteks(msg)

# rubikcube.init_arange()

print(rubikcube)

key = input("Key: ")

rubikcube.encrypt(key)

print(rubikcube)

avatar Xoxo
@Xoxo

1 Kontribusi 0 Poin

Diperbarui 2 tahun yang lalu

1 Jawaban:

<div>Yang bagian ini,&nbsp;<br>Kenapa harus di set_printoptions lagi akhiran nya? jika pada akhirnya memakai yang<br><br></div><pre>formatter={'str': '{: 3d}'.format}</pre><div>&nbsp;</div><pre>def str(self): current_printoptions = np.get_printoptions() np.set_printoptions(formatter={'str': '{: 3d}'.format})

    output = &quot;&quot;
    indent = &quot; &quot; * (1 + self.size * 4)
    for row in self.A:
        output += indent + str(row) + &quot;\n&quot;
    for zipped_row in zip(self.B, self.C, self.D, self.E):
        for row in zipped_row:
            output += str(row) 
        output += &quot;\n&quot;
    for row in self.F: 
        output += indent + str(row) + &quot;\n&quot;
    
    np.set_printoptions(current_printoptions)

    return output&lt;/pre&gt;&lt;div&gt;Edit =======&lt;br&gt;Oh sorry, kek nya ga ada kaitannya ama error nya rupanya.&lt;br&gt;&lt;br&gt;Edit 2 ======&lt;br&gt;Kendala nya itu ada pada Numpy. Entah karena perubahan apa yang terjadi&amp;nbsp;&lt;br&gt;Mengembalikan nilai default set_printoptions menggunakan value sebelum nya terjadi kesalahan/&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;br&gt;Edit 3 =====&lt;/div&gt;&lt;pre&gt;        current_printoptions = np.get_printoptions()
    print(np.get_printoptions())
    print(current_printoptions)
    np.set_printoptions(formatter={&#039;str&#039;: &#039;{: 3d}&#039;.format})
    print(np.get_printoptions());
    print(current_printoptions);

keluarnya

{'edgeitems': 3, 'threshold': 1000, 'floatmode': 'maxprec', 'precision': 8, 'suppress': False, 'linewidth': 75, 'nanstr': 'nan', 'infstr': 'inf', 'sign': '-', 'formatter': None, 'legacy': False} {'edgeitems': 3, 'threshold': 1000, 'floatmode': 'maxprec', 'precision': 8, 'suppress': False, 'linewidth': 75, 'nanstr': 'nan', 'infstr': 'inf', 'sign': '-', 'formatter': None, 'legacy': False} {'edgeitems': 3, 'threshold': 1000, 'floatmode': 'maxprec', 'precision': 8, 'suppress': False, 'linewidth': 75, 'nanstr': 'nan', 'infstr': 'inf', 'sign': '-', 'formatter': {'str': &lt;built-in method format of str object at 0x0000017C39E67A70&gt;}, 'legacy': False} {'edgeitems': 3, 'threshold': 1000, 'floatmode': 'maxprec', 'precision': 8, 'suppress': False, 'linewidth': 75, 'nanstr': 'nan', 'infstr': 'inf', 'sign': '-', 'formatter': None, 'legacy': False} <br></pre><div><br><br>Jadi dari pada</div><pre>np.set_printoptions(current_printoptions)</pre><div>gunakan ini aja mungkin&nbsp;</div><pre>np.set_printoptions(formatter=None)</pre><div><br><br></div>

avatar GrennKren
@GrennKren

62 Kontribusi 47 Poin

Dipost 2 tahun yang lalu

Tanggapan

Terimakasih kak, outputnya sudah keluar tapi ga sesuai sama yang manual.

Outputnya kira2 seperti ini kak :

input Message : POIMSQ&P7-D&X?(<3J*Q Key : C1-R4-C6-R6-C3-L1-R1-C4-C3-L4

input Message : POIMSQ&P7-D&X?(<3J*Q Key : C1-R4-C6-R6-C3-L1-R1-C4-C3-L4

https://i.stack.imgur.com/7LMIj.png

Output : 3%%O*%%%%-%%7&Q*%%%M?J%X*(<%%%Q%%%%P%%S%%IP%%&%%D%%%%%

Yg di dalam function init_plaintext nya.. mundurkan jarak yg increment i nya.

Yg baris tmpB = np.copy(selef.B[:1]) ini pun typo 'selef'

Wahh iya kak, terimakasih banyak ya bantuannya

Login untuk ikut Jawaban