Unit : Penutupan Untuk While

Oleh ianfreecs 272 10 pada Rabu, 20 Des. 2017, 23:44:59


Kembali ke forum soal ini

#python #loop-atau-pengulangan #while-loops


Petunjuk Diskusi
Silahkan masuk untuk berdiskusi



from random import randint

hitung_kepala = 0
hitung_total = 0

while True:
  
  # angka integer acak: 0 atau 1
  putar  = randint(0,1)
  
  if putar:
    hitung_kepala  = hitung_kepala + 1
    print str(hitung_total) + " kepala " + str(hitung_kepala)
  else:
    hitung_kepala = 0
    print str(hitung_total) + " buntut"
    
  hitung_total = hitung_total + 1

  if not (hitung_kepala < 3 and hitung_total < 100):
    break

print "Muncul kepala " + str(hitung_kepala) + " kali berturut-turut."

""" selesai """

Saya kesulitan memahami bagian ini.
Saya belum yakin bagaimana While akan berhenti. Sejauh yang saya tau, loop while akan berakhir jika nilai false dengan syarat Kepala keluar 3 kali berturut-turut

nilai false ini ditentukan dari baris:
if not (hitung_kepala < 3 and hitung_total < 100):
    break

Bagiamana baris tsb bekerja?
Saya berterimakasih jika ada yg berkenan membantu menjelaskan :)
0 jempol


ZihxS
300
816
· 6 tahun, 11 bulan yang lalu · 2 jempol

Hai coder ianfreecs,

from random import randint

1) hitung_kepala = 0
2) hitung_total = 0

3) while True:
  
  # angka integer acak: 0 atau 1
  4) putar  = randint(0,1)
  
  5) if putar:
    6) hitung_kepala  = hitung_kepala + 1
    7) print str(hitung_total) + " kepala " + str(hitung_kepala)
  8) else:
    9) hitung_kepala = 0
    10) print str(hitung_total) + " buntut"
    
  11) hitung_total = hitung_total + 1

  12) if not (hitung_kepala < 3 and hitung_total < 100):
    13) break

14) print "Muncul kepala " + str(hitung_kepala) + " kali berturut-turut."

Penjelasan :

Di bagian 1,2 :
Mendeklarasikan variabel hitung_kepala dan hitung_total dimana masing masing isinya berupa integer yang bernilai 0

Di bagian 3:
While akan otomatis berjalan karena belum anda kondisi false pada programnya pada saat di run.

Di bagian 4:
Mendeklarasikan variabel putar yang mana isinya akan di acak selama perulangan berlangsung yang akan menghasilkan hanya dua isi yaitu 0 atau 1.

Di bagian 5:
Jika variabel putar itu isinya 1 maka perintah yang di dalamnya akan di jalankan (di bagian 6,7 akan di jalankan di bagian 9,10 tidak akan di jalankan).

Di bagian 6:
Variabel hitung_kepala isi sebelumnya akan di tambahkan 1. Misal isi sebelumnya 2 maka nantinya akan di tambahkan 1 yang menghasilkan angka 3.

Di bagian 7:
Akan mengeluarkan output jumlah hitung_total dan mengeluarkan string " kepala " juga mengeluarkan isi baru dari variabel hitung_kepala.

Di bagian 8:
Jika variabel putar isinya 0 maka perintah atau pernyataan ini akan di jalankan dan bagian 5,6,7 akan diabaikan.

Di bagian 9:
Variabel hitung_kepala akan di ubah lagi menjadi 0.

Di bagian 10:
Akan mengeluarkan output jumlah variabel hitung_total dan string " buntut"

Di bagian 11:
Mendeklarasikan variabel hitung_total pada awal perulangan dimulai, dan selama proses perulangan berjalan variabel hitung_total akan di tambah 1 setiap 1 perulangan berjalan.

Di bagian 12: 
Jika variabel hitung_kepala isinya tidak lebih kecil daripada 3 dan variabel_total tidak lebih kecil daripada 100 maka output akan menghasilkan boolean True dan bagian 13 tidak akan di eksekusi maka perulangan akan terus berjalan. Dan jika variabel hitung_kepala isinya sudah sampai 3 dan variabel isi hitung_totalnya masih dibawah 100, bagian ke 13 akan dijalankan maka output akan mencetak (Muncul kepala 3 kali berturut-turut.) Tetapi jika hitung_kepala isinya sudah sampai 3 dan variabel isi hitung_totalnya diatas 100, bagian ke 13 akan dijalankan tetapi output akan mencetak (Muncul kepala (1 atau 2) kali berturut-turut.) karena jumlah totalnya sudah sampai 100.

Semoga membantu ^_^

ianfreecs
272
10
penanya
· 6 tahun, 11 bulan yang lalu · 0 jempol

Terimakasih coder ZihxS atas penjelasannya.

berarti kalau saya ubah baris:
  12) if not (hitung_kepala < 3 and hitung_total < 100):
    13) break

menjadi:
  12) if hitung_kepala >= 3 or hitung_total >= 100:
    13) break

Akan sama kah fungsinya?

Terimakasih =)

ZihxS
300
816
· 6 tahun, 11 bulan yang lalu · 1 jempol

Sama sama @ianfreecs,

Tentu akan berbeda fungsinya ^_^

ayato
136
0
· 6 tahun, 10 bulan yang lalu · 0 jempol

kenapa   if putar: tidak ditulis if putar == 1: saja?

ZihxS
300
816
· 6 tahun, 10 bulan yang lalu · 1 jempol

Hai coder ayato,

Lebih cepat lebih baik :D

ayato
136
0
· 6 tahun, 8 bulan yang lalu · 0 jempol

jadi kalo gak ada pembandingnya otomatis nilai pembandingnya itu = 1 atau True ya?. True dan 1 itu sama ya?