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

2024-10-02 10:22:20 发布

您现在位置: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


Tags: formatlistprintyangsetdifferencesehinggakiri
1条回答
网友
1楼 · 发布于 2024-10-02 10:22:20

删除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

相关问题 更多 >

    热门问题