新しいクラスオブジェクトが作成されたときに入力をチェックして、入力が正しく入力されているかどうかを確認しようとしています。「theMoves」が正しく入力されていない場合は、無視するか、リストに変換してみてください。
Class Card:
def __init__(self, theName,theHP, theMoves ):
self.theName=str(theName)
self.theHp=int(theHP)
self.theMoves=theMoves # [(),()..]
Class Deck:
#more code here
#When i try adding a card to the deck i get an index error because theMoves in the Card class arnt correct. It works with the c0,c1
def main():
#c0=Card("Dave",454,[("Fieball",999)]) # works
c1=Card("Bob",500,[("Fireball",999),("Flame",999),("Waterblast",499)]) #works
#c2=Card("Peter",400,(fire,342)) # Fix
#c3=Card("Josh",300,waterb,22) #fix (maybe by just ignoring the moves after checking each varible)
「c2」/「c3」で行ったように誰かが間違った情報を入力した場合、c0やc1などの形式に一致するように値を変換するか、値をすべて無視する方法があるかどうか疑問に思っています。簡単な場合は、間違って入力された場合に移動値を無視してもかまいませんが、それを実行する方法がわかりませんか?私がオンラインで見たとき、誰かが新しい方法について言及しているのを見ましたが、Pythonとオブジェクトについて私がそれをどのように行うかについてあまり確信がありません。
事前に時間を割いて助けてくれてありがとう:)
使用isinstance()
:
if isinstance(theMoves, list) and theMoves and isinstance(theMoves[0], tuple):
pass
elif isinstance(theMoves, tuple):
theMoves = [theMoves]
else:
raise ValueError('Unexpected input type')
しかし、一般的に、プログラマーは考えられるすべてのケースを処理できるわけではありません。予期しない入力で中断させることは、すべての入力を解析しようとすることと比較して悪い設計ではありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加