def play_game(word_list):
hand = deal_hand(HAND_SIZE) # random init
while True:
cmd = raw_input('Enter n to deal a new hand, r to replay the last hand, or e to end game: ')
if cmd == 'n':
hand = deal_hand(HAND_SIZE)
play_hand(hand.copy(), word_list)
print
elif cmd == 'r':
play_hand(hand.copy(), word_list)
print
elif cmd == 'e':
break
else:
print "Invalid command."
Sedangkan APA yang Benar?
Saya rasa mengatakan 'sementara benar' itu singkat, tapi untuk apa? Sementara variabel 'tangan' diberi nilai? Dan bagaimana jika variabel 'tangan' tidak diberi nilai?
True
bukan alias untuk1
. Meskipun dalam banyak bahasa1
mengevaluasi kebenaran dalam konteks boolean.True
telah menjadi alias untuk1
, bukan? Padahal ya, di versi terbaru Python ada tipe boolean yang sebenarnya.__builtin__
modul, True dan False. (Konstanta True dan False ditambahkan ke -ins dalam Python 2.2.1, tetapi versi 2.2.1 hanya disetel ke nilai integer 1 dan 0 dan bukan tipe yang berbeda.) ".Jawaban:
while True
Berarti loop selamanya. Thewhile
Pernyataan mengambil ekspresi dan mengeksekusi tubuh loop sementara mengevaluasi ekspresi (boolean) "benar".True
selalu mengevaluasi ke boolean "true" dan dengan demikian mengeksekusi badan perulangan tanpa batas. Ini adalah ungkapan yang akhirnya akan Anda terbiasa! Sebagian besar bahasa yang mungkin Anda temui memiliki idiom yang setara.Perhatikan bahwa kebanyakan bahasa biasanya memiliki beberapa mekanisme untuk keluar dari loop lebih awal. Dalam kasus Python, ini adalah
break
pernyataan dalamcmd == 'e'
kasus sampel dalam pertanyaan Anda.sumber
while True==True
itu jelek. Ini sama jeleknya denganwhile 'apples'!='oranges'
:)true==true
merupakan peningkatan, di mana Anda berhenti? Bukankah(true==true)==true
lebih baik?Saat
True
iniTrue
.Perulangan while akan berjalan selama ekspresi kondisional terevaluasi
True
.Karena
True
selalu mengevaluasi keTrue
, loop akan berjalan tanpa batas, sampai sesuatu di dalam loopreturn
s ataubreak
s.sumber
Segala sesuatu di dalam () pernyataan while akan dievaluasi sebagai boolean. Artinya itu akan diubah menjadi benar atau salah.
Pertimbangkan dalam pernyataan itu
while(6 > 5)
Ini pertama-tama mengevaluasi ekspresi
6 > 5
yangtrue
sama dengan ucapanwhile(true)
Apa pun yang tidak FALSE, 0, string kosong "", null, atau tidak ditentukan kemungkinan akan dievaluasi menjadi benar.
Ketika saya pertama kali memulai pemrograman, saya biasa melakukan hal-hal seperti
if(foo == true)
, saya tidak menyadari bahwa itu hampir sama denganif(foo)
.Jadi ketika Anda mengatakan
while(true)
itu seperti mengatakanwhile(true == true)
Jadi untuk menjawab pertanyaan Anda: While TRUE is True.
sumber
sementara
True
itu benar - yaitu selalu. Ini adalah putaran tak terbatasPerhatikan perbedaan penting di sini antara
True
yang merupakan kata kunci dalam bahasa yang menunjukkan nilai konstan dari jenis tertentu, dan 'benar' yang merupakan konsep matematika.sumber
while(5)
dalam C, di mana tidak ada boolean yang tepat. Itu tidak berartiwhile(5==1)
, itu berartiwhile(5!=0)
.while(5)
dalam C berarti while5
itu benar, bukan sementara itstrue
or0
, yang merupakan sesuatu yang sama sekali berbeda.5
selalu benar. Secara umum, ketika bahasa memiliki kata kuncitrue
, itu adalah konstanta yang benar, tetapi bukan satu-satunya konstanta yang benar. Demikian pulafalse
belum tentu satu-satunya nilai yang salah.Dalam konteks ini, saya kira itu bisa diartikan sebagai
do ... while cmd != 'e'
sumber
True
selaluTrue
begituwhile True
juga loop selamanya.Kata
while
kunci mengambil ekspresi, dan mengulang saat ekspresi benar.True
adalah ungkapan yang selalu benar.Sebagai contoh klarifikasi, pertimbangkan hal berikut:
a = 1 result = a == 1
Di sini,
a == 1
akan kembaliTrue
, dan karenanya dimasukkanTrue
ke dalamresult
. Karenanya,a = 1 while a == 1: ...
setara dengan:
while True: ...
asalkan Anda tidak mengubah nilai
a
inside thewhile
loop.sumber
True
tidak selaluTrue
, misTrue = False
. ;-)Secara formal,
True
adalah Python built-in konstan dari bool tipe.Anda dapat menggunakan operasi Boolean pada tipe bool (pada prompt python interaktif misalnya) dan mengonversi angka menjadi tipe bool:
>>> print not True False >>> print not False True >>> print True or False True >>> print True and False False >>> a=bool(9) >>> print a True >>> b=bool(0) >>> print b False >>> b=bool(0.000000000000000000000000000000000001) >>> print b True
Dan ada "gotcha's" yang berpotensi dengan apa yang Anda lihat dan apa yang dilihat compiler Python:
>>> n=0 >>> print bool(n) False >>> n='0' >>> print bool(n) True >>> n=0.0 >>> print bool(n) False >>> n="0.0" >>> print bool(n) True
Sebagai petunjuk tentang bagaimana Python menyimpan tipe bool secara internal, Anda dapat mentransmisikan tipe bool menjadi integer dan True akan menjadi 1 dan False 0:
>>> print True+0 1 >>> print True+1 2 >>> print False+0 0 >>> print False+1 1
Sebenarnya,
bool
tipe Python adalah subclass dariint
tipe Python :>>> type(True) <type 'bool'> >>> isinstance(True, int) True
Bagian terpenting dari pertanyaan Anda adalah "Apa itu
while True
?" itu 'apa yang Benar', dan akibat wajar yang penting: Apa yang salah?Pertama, untuk setiap bahasa yang Anda pelajari, pelajari apa yang dianggap bahasa 'benar' dan 'salah'. Python menganggap Truth sedikit berbeda dari Perl Truth misalnya. Bahasa lain memiliki konsep yang sedikit berbeda tentang benar / salah. Ketahui apa yang menurut bahasa Anda Benar dan Salah untuk operasi yang berbeda dan kontrol aliran untuk menghindari banyak sakit kepala nantinya!
Ada banyak algoritma di mana Anda ingin memproses sesuatu hingga Anda menemukan apa yang Anda cari. Karenanya loop tak terbatas atau loop tak tentu. Setiap bahasa cenderung memiliki idiom sendiri untuk konstruksi ini. Berikut adalah loop C tak terbatas yang umum, yang juga berfungsi untuk Perl:
for(;;) { /* loop until break */ } /* or */ while (1) { return if (function(arg) > 3); }
The
while True:
Bentuk umum di Python untuk loop yang tidak terbatas dengan beberapa cara melanggar keluar dari loop. Pelajari kontrol aliran Python untuk memahami bagaimana Anda keluar dariwhile True
loop. Tidak seperti kebanyakan bahasa, misalnya, Python dapat memilikielse
klausa dalam satu putaran. Ada contoh di tautan terakhir.sumber
Sebuah
while
lingkaran membutuhkan argumen bersyarat (yang berarti sesuatu yang umumnya benar atau salah, atau dapat diartikan seperti itu), dan hanya mengeksekusi sedangkan hasil kondisiTrue
.Untuk apa
while True
? Nah, syarat sejati yang paling sederhana adalahTrue
dirinya sendiri! Jadi ini adalah putaran tak terbatas, biasanya bagus dalam permainan yang membutuhkan banyak perulangan. (Lebih umum dari perspektif saya, bagaimanapun, adalah untuk mengatur semacam variabel "selesai" ke salah dan kemudian membuatnya benar untuk mengakhiri permainan, dan loop akan terlihat lebih sepertiwhile not done:
atau apa pun.)sumber
Dalam beberapa bahasa, True hanya dan alias untuk nomor tersebut. Anda dapat mempelajari lebih lanjut mengapa hal ini terjadi dengan membaca lebih lanjut tentang logika boolean .
sumber
Untuk menjawab pertanyaan Anda secara langsung: sedangkan kondisi loop adalah True. Yang selalu ada, dalam sedikit kode ini.
sumber
while
loop terus mengulang sampai kondisinya salah. Misalnya (pseudocode):i = 0 while i < 10 i++
Dengan setiap iterasi loop,
i
akan bertambah 1, hingga menjadi 10. Pada titik itu, kondisii < 10
tidak lagi benar, dan loop akan selesai.Karena kondisi di
while True
secara eksplisit dan selalutrue
, pengulangan tidak akan pernah berakhir (hingga dipecah dengan cara lain, biasanya dengan konstruksi sepertibreak
di dalam badan perulangan).sumber
Tidak ada yang mengevaluasi
True
lebih cepat dariTrue
. Jadi, ada baiknya jika Anda menggunakan,while True
bukanwhile 1==1
dll.sumber
while True: ...
berarti loop tak terbatas.
Pernyataan while sering digunakan untuk perulangan terbatas. Tetapi menggunakan konstanta 'True' menjamin pengulangan pernyataan while tanpa perlu mengontrol perulangan (misalnya menyetel nilai boolean di dalam iterasi), kecuali jika Anda ingin memutusnya.
Faktanya
True == (1 == 1)
sumber
Sedangkan True mean infinite loop, ini biasanya digunakan dengan proses yang panjang. kamu bisa berubah
while True:
dengan
while 1:
sumber
Meskipun sebagian besar jawaban ini benar untuk berbagai tingkat, tidak ada yang sesingkat yang saya inginkan.
Sederhananya, menggunakan
while True:
hanyalah cara menjalankan loop yang akan terus berjalan sampai Anda secara eksplisit keluar dari loop menggunakanbreak
ataureturn
. Karena True akan selalu bernilai True, Anda harus memaksa pengulangan untuk mengakhiri saat Anda menginginkannya.while True: # do stuff if some_condition: break # do more stuff - code here WILL NOT execute when `if some_condition:` evaluates to True
Sementara biasanya loop akan diatur untuk berjalan sampai kondisi while salah, atau mencapai titik akhir yang telah ditentukan:
do_next = True while do_next: # do stuff if some_condition: do_next = False # do more stuff - code here WILL execute even when `if some_condition:` evaluates to True
Kedua potongan kode tersebut secara efektif melakukan hal yang sama
Jika kondisi yang dievaluasi oleh loop Anda mungkin merupakan nilai yang tidak secara langsung ada dalam kontrol Anda, seperti nilai input pengguna, maka validasi data dan secara eksplisit keluar dari loop biasanya diperlukan, jadi Anda sebaiknya melakukannya dengan salah satu metode .
The
while True
Format lebih pythonic karena Anda tahu bahwabreak
adalah melanggar loop pada titik yang tepat, sedangkando_next = False
bisa melakukan lebih banyak barang sebelum evaluasi berikutnyado_next
.sumber
Apa pun dapat dianggap Benar sampai lawannya ditampilkan. Inilah cara kerja dualitas. Ini adalah cara membandingkan lawan. Hitam bisa Benar sampai putih di mana titik itu Salah. Hitam juga bisa Salah sampai putih di mana titik itu Benar. Ini bukanlah suatu keadaan tetapi perbandingan dari keadaan yang berlawanan. Jika salah satunya Benar, maka yang lainnya salah. Benar tidak berarti benar atau diterima. Ini adalah keadaan di mana kebalikannya selalu Salah. Itu adalah dualitas.
sumber