私は比較的新しいPythonです。クラスの使い方を学び始めました。これは、私がそれらを統合しようとしたところで私が作った最初のプログラムですが、修正できない小さな問題が出てきています。リストと関係があると思います。コードは次のとおりです: (トピックでは、購入するシートの種類を選択するようになっています)。ここでリストに問題がありますか?エラーチェックが機能しない
class SeatBooking:
def __init__(self, seat):
self.seat = seat
possible_types = []
possible_types.extend(["Low_Economy", "Standard_Economy", "High_Economy",
"Business", "First", "Residence"])
possible_types = " ".join(possible_types)
while True:
if self.seat not in possible_types:
print("Sorry, but this is not a valid answer. Please try again!")
self.seat = str(input("What type of ticket would you like? The possible types are: {} "
.format(possible_types)))
else:
print("You have chosen to book a {} ticket.".format(self.seat))
confirmation = str(input("Please confirm with 'Yes' or 'No': ")).lower()
if confirmation == "yes":
print("Excellent decision! Ready to continue")
print("=" * 170)
break
elif confirmation == "no":
self.seat = str(input("What type of ticket would you like? The possible types are: {} "
.format(possible_types)))
else:
print("That doesn't seem to be a valid answer.")
は、メインファイル(私が作ってあげる異なるクラスを実行する)です:
import type_seat
# Choose the seat to book
print("=" * 170)
print("Welcome to Etihad! This program can help you organize your flight, payments and usage of miles!")
possible_types = []
possible_types.extend(["Low_Economy", "Standard_Economy", "High_Economy",
"Business", "First", "Residence"])
possible_types = " ".join(possible_types)
seat_type = str(input("What type of ticket would you like? The possible types are: {}. "
.format(possible_types)))
type_seat.SeatBooking(seat_type)
私が持っている問題は、「私は特定の文字を入力することができるように見える、それはdoesnのことです利用可能な座席の1つではないにもかかわらず、それらをエラーとしてカウントしません。たとえば、文字 "h"または "s"を入力すると、コードの一部をチェックするエラーは応答しませんが、文字 "b"または "try"のようなランダムな単語を入力するとエラーになります。それは完全にランダムではないようですが、それはpossible_types []リストの最初の3つの 'items'の文字または部分でのみ起こるようです。しかし、私はこれを完全にテストしていません。これがリストと関係があると思った理由です。誰かがこれを引き起こしていることを知っていれば、私がこれを解決し、今後このミスを繰り返すのを助けることができたら本当に感謝しています!
注意してください。リストについては、私は.joinを使用していますが、str()も試しました。
'H' *あなたの 'possible_types'に*です。これは文字列の文字列であり、文字 'h'はその一部(High_Economyという単語)です。シーケンス 'try'はそうではありません。なぜこの "1"の文字列を作成し、それをリストに残さないために '' ".join()'を使いましたか? –
ああ私の神は正しいよ!私はそれを削除し、それは働いた。私はstr()の前に.joinを使用しなければならないと思っていました。また、私は最高ではない;)。とにかく、1つの質問。 self.seat = str(input( "あなたが好きなチケットのタイプ:{}" .format(possible_types)))は私にキーボード割り込みを与えますか? – Eric
1) 'str()'を呼び出す必要はありません。Python 3の 'input()'では**常に**が 'str'を返します。 'input()'は、ユーザーが応答を入力するための入力サポートを持つコンソールを必要とします。私はおそらくあなたがIDEコンソールまたは同様の入力がない同様のこのコードを実行していると思いますか?それはEOFを引き起こすか、キーボードの割り込みを引き起こす可能性があります。そうでなければ、考えはありません。 –