このコードは参考用です。彼らは400ゴールドで始まり、アイテムが高すぎる場合、別のアイテムを選びたいかどうかを尋ねます。私の問題は、whileループを無限にループする余裕があるアイテムを選んだ場合、その理由がわからないことです。これはどうwhileループはelif文に達した場合に無限ループします
shopitemsF = ["Ghostblade: 150 Damage, Cost: 700", "Thunderblade: 120 Damage, Cost: 300", "Bloodcursed Sword: 160 Damage, Cost 800"]
shopitemsM = ["Fire Throw: 150 Damage, Cost: 700", "Ice Wind: 120 Damage, Cost: 300", "Electric shock: 160 Damage, Cost 800"]
print("Welcome to the shop.")
print('')
if character == "Fighter":
g = ', '
print(g.join(shopitemsF))
time.sleep(1)
elif character == "Mage":
g = ', '
print(g.join(shopitemsM))
time.sleep(1)
shopchoice = input("Please pick another item? ")
print('')
while True:
for text2 in shopitemsF:
if shopchoice in text2:
print(text2)
if int(text2[-3:]) >= gold:
print("You need another", int(text2[-3:]) - gold, "gold.")
shopchoice = input("Please pick another item? ")
break
elif int(text2[-3:]) <= gold:
print("You have purchased,", text2[:-11]+".")
x = (int(text2[-21:-18]))
for text2 in shopitemsM:
if shopchoice in text2:
print(text2)
if int(text2[-3:]) >= gold:
print("You need another", int(text2[-3:]) - gold, "gold.")
shopchoice = input("Please pick another item? ")
break
elif int(text2[-3:]) <= gold:
print("You have purchased,", text2[:-11]+".")
x = (int(text2[-21:-18]))
どのelifステートメント?いくつかの外側のループ状態があるように思えますが、これは 'if'では変更されますが、' elif'では変更されません。したがって、ループ状態が変わることはないので、elifに当たったら直ちに止まります。 –