Saya menulis sebuah while loop
dalam sebuah fungsi, tetapi tidak tahu bagaimana cara menghentikannya. Ketika tidak memenuhi kondisi akhir, perulangan hanya berjalan selamanya. Bagaimana saya bisa menghentikannya?
def determine_period(universe_array):
period=0
tmp=universe_array
while True:
tmp=apply_rules(tmp)#aplly_rules is a another function
period+=1
if numpy.array_equal(tmp,universe_array) is True:
break #i want the loop to stop and return 0 if the
#period is bigger than 12
if period>12: #i wrote this line to stop it..but seems it
#doesnt work....help..
return 0
else:
return period
cukup indentasi kode Anda dengan benar:
def determine_period(universe_array):
period=0
tmp=universe_array
while True:
tmp=apply_rules(tmp)#aplly_rules is a another function
period+=1
if numpy.array_equal(tmp,universe_array) is True:
return period
if period>12: #i wrote this line to stop it..but seems its doesnt work....help..
return 0
else:
return period
Anda perlu memahami bahwa pernyataan break
dalam contoh Anda akan keluar dari infinite loop yang telah Anda buat dengan while True
. Jadi ketika kondisi break adalah True, program akan keluar dari infinite loop dan melanjutkan ke blok indentasi berikutnya. Karena tidak ada blok berikut dalam kode Anda, fungsi berakhir dan tidak mengembalikan apapun. Jadi saya telah memperbaiki kode Anda dengan mengganti pernyataan break
dengan pernyataan return
.
Mengikuti ide Anda untuk menggunakan infinite loop, ini adalah cara terbaik untuk menulisnya:
def determine_period(universe_array):
period=0
tmp=universe_array
while True:
tmp=apply_rules(tmp)#aplly_rules is a another function
period+=1
if numpy.array_equal(tmp,universe_array) is True:
break
if period>12: #i wrote this line to stop it..but seems its doesnt work....help..
period = 0
break
return period
def determine_period(universe_array):
period=0
tmp=universe_array
while period<12:
tmp=apply_rules(tmp)#aplly_rules is a another function
if numpy.array_equal(tmp,universe_array) is True:
break
period+=1
return period
Operator is
dalam Python mungkin tidak melakukan apa yang Anda harapkan. Bukannya seperti ini:
if numpy.array_equal(tmp,universe_array) is True:
break
Saya akan menuliskannya seperti ini:
if numpy.array_equal(tmp,universe_array):
break
Operator adalah
menguji identitas objek, yang merupakan sesuatu yang sangat berbeda dari kesetaraan.