ユーザ入力を定義済みのリストと照合するための検証ループを作成しようとしていますが、何らかの理由でコードがループして値を再入力することを永久に求めています。私はループにprintコマンドを追加してテストし、入力データは属性辞書に格納されていますが、forループからのブレークをトリガする==基準を満たすことは決してないようです。ここでforループ内でのraw_inputの検証
は、これまでの私のコードですが、私は間違って行くよどこに任意の提案を本当に感謝:
attributes = {'Name': 'None', 'Class': 'None', 'Strength': 3, 'Agility': 3, 'Wounds': 3, 'Intelligence': 3}
attributes['Name'] = raw_input('What is your character\'s name?')
attributes['Class'] = raw_input('Choose your character\'s class, enter Warrior, Mage, Ranger or Thief.')
#this is the section I am struggling with!
for values in attributes:
if attributes['Class'] != "Warrior" or "Mage" or "Ranger" or "Thief":
attributes['Class'] = raw_input('Please choose either Warrior, Mage, Ranger or Thief.')
continue
elif attributes['Class'] == "Warrior" or "Mage" or "Ranger" or "Thief":
break
if attributes["Class"] == "Warrior":
attributes["Strength"] += 1
attributes["Wounds"] += 1
elif attributes["Class"] == "Mage":
attributes["Intelligence"] += 2
elif attributes["Class"] == "Ranger":
attributes["Strength"] += 1
attributes["Agility"] += 1
elif attributes["Class"] == "Thief":
attributes["Agility"] += 1
attributes["Intelligence"] += 1
print
print 'Name: ' + attributes['Name']
print 'Class: ' + attributes['Class']
print 'STR: ' + str(attributes['Strength']), 'AGI: ' + str(attributes['Agility']), 'WOU: ' + str(attributes['Wounds']) ,'INT: ' + str(attributes['Intelligence'])