Итак, я попробовал еще кое-что и думаю, что знаю, почему получил ошибку. Я думаю, что ставлю один лишний пробел перед ответом в качестве ввода. Поэтому вместо ответа на «рок» я ответил «рок». Поэтому моему вводу не было присвоено целочисленное значение, поскольку в моем словаре нет слова «рок», из-за которого разница в строке вызвала ошибку.
Для тех, кто может столкнуться с той же проблемой, это то, что я сделал, чтобы я не получил сообщение об ошибке, если вход немного отключен (теперь он сообщит пользователю, что ввод был неправильным и они должны попробовать что-то еще):
while True:
dictionary = {"steen": 1, "papier": 2, "schaar": 3}
p1 = raw_input("Speler 1, maak een keuze: steen, papier of schaar: ")
p2 = raw_input("Speler 2, maak een keuze: steen, papier of schaar: ")
a = dictionary.get(p1)
b = dictionary.get(p2)
antwOpties = ["steen", "papier", "schaar"]
if p1 not in antwOpties or p2 not in antwOpties:
print ("U heeft een ongeldig antwoord ingevuld, kies schaar, steen of papier")
continue
dif = a - b
if dif in [1, -2]:
print ("Speler 1 heeft gewonnen")
if str(input("Wilt u nog een keer spelen, ja of nee?")) == "Ja":
continue
else:
print ("Game over")
break
elif dif in [-1, 2]:
print ("Speler 2 heeft gewonnen")
if raw_input("Wilt u nog een keer spelem, ja of nee?") == "Ja":
continue
else:
print ("Game over")
break
else:
print ("Gelijkspel")
if raw_input("Wilt u nog een keer spelen, ja of nee?") == "Ja":
continue
else:
print ("Game over")
break
Итак, прежде всего, я создал список с возможными ответами, который называется antwOpties. Затем я создал фрагмент кода, который проверял бы, есть ли вход игрока 1 и 2 в этот список. Если это не так, он выводит это и запрашивает другой ввод, а затем возвращает обратно в начало l oop благодаря «продолжить». И наконец, я переместил «dif = a - b» ниже того фрагмента кода, который проверяет, является ли ввод действительным. Я сделал это так, чтобы он не go проходил через это, если ввод недействителен (поскольку он проходит только через «продолжить», если ввод в ответах равен IS и, таким образом, соответствует целому числу.