为什么我的代码每次运行都会产生不同的结果? (蟒蛇)

时间:2020-05-15 01:23:28

标签: python

这是我的代码

daftar = ["K","H","S"]
kiri = daftar
kanan = []
petani = []

def kirikekanan():
    global daftar, kiri, kanan, petani, naonweh
    petani = list(next(naonweh))
    kiri_sementara = list(set(kiri).difference(petani)) #mengurangkan isi himpunan yang ada di kiri dengan yg dibawa petani
    if set(kiri_sementara) == {"K","H"} or set(kiri_sementara) == {"K","S"}:
        kirikekanan()
    else:
        kiri = kiri_sementara
        kanan = list(set(daftar).difference(kiri))
        print("yang dibawa petani = {}, sehingga kiri = {}, kanan = {}y".format(petani, kiri, kanan))

def kanankekiri():
    global daftar, kiri, kanan, petani, naonweh2
    if set(kanan) == {"K","H"} or set(kanan) == {"K","S"}:
        petani = list(next(naonweh2))
        kanan = list(set(kanan).difference(petani))
        kiri = list(set(daftar).difference(kanan))
        print("yang dibawa petani = {}, sehingga kiri = {}, kanan = {}g".format(petani, kiri, kanan))
    else:
        petani = []
        print("yang dibawa petani = {}, sehingga kiri = {}, kanan = {}g".format(petani, kiri, kanan))

while set(kanan) != set(daftar):
    naonweh = iter(kiri)
    naonweh2 = iter(kanan)
    kirikekanan()
    kanankekiri()

这是我想产生的结果:

the result i want to produce

但是如果我第二次或第三次运行此命令,则会得到不同的结果。这样会导致无限循环:

the result i don't want to produce

1 个答案:

答案 0 :(得分:1)

删除您的if set(kanan) == {"K","H"} or set(kanan) == {"K","S"}:中的设置。

if kanan == {"K","H"} or kanan == {"K","S"}:
    petani = list(next(naonweh2))
    kanan = list(set(kanan).difference(petani))
    kiri = list(set(daftar).difference(kanan))
    print("yang dibawa petani = {}, sehingga kiri = {}, kanan = {}g".format(petani, kiri, kanan))

Output is here