2020/12/12 23:10のコメントを使って回答します。また、質問の本文より『下記コードで、「n」を選択しても While文を抜けることができない状態です。』のため、「y」のケースは一旦考慮しないものとします。すると、以下のようなシンプルなコードになります。
python
1# Sample1
2while True:
3 choice = input('HITしますか? (Y/N) : ').lower()
4 if choice == 'y':
5 # [y]を選択したときの処理(一旦、棚に上げます)
6 pass
7 else :
8 # [y]以外を選択したときの処理
9 print(f'dealerのカード{dealer_hand} - dealerの合計:{total(dealer_hand)}')
.lower()つきのchoice変数に、[Y]もしくは[y]以外を入力すると、choice == 'y'ではないため、elseブロックにうつります。
elseブロックはprintの処理をします。この処理が終わったあと、if文の処理を終えますが、これ以降何も処理が記述されていないため、またwhileループの先頭の処理に戻ります。choice == 'y'以外のとき(仮に、choiceにnが代入されているものとします)、else内にbreakがあると無限ループから抜け出すことができます。
python
1# Sample2
2while True:
3 choice = input('HITしますか? (Y/N) : ').lower()
4 if choice == 'y':
5 pass
6 else :
7 # [y]以外を選択したときの処理
8 break
反対に、Sample2でchoice == 'y'であればpassによりif文ブロックを何もせず通過します。そのため無限ループに入ることがわかります。無限ループを抜け出すにはbreakやexit()、quit()、エラーなど何か終わるための条件が必要となります。慣れないうちは大変かもしれませんが、順番にコードを追ってみてください。
2020/12/13 04:17