2016-08-15 2 views
-4

Я пытаюсь создать эту измененную версию поездки по дороге в python 3.4.3, и она не работает, как я хочу. Проблема заключается в том, что, когда игрок выбирает что-либо, кроме «y», когда получает удар за застревание, он предполагает, что игрок хочет воспользоваться шансом, когда он/она этого не сделает. Я попытался использовать оператор else, и я попробовал не перед ним. Вы увидите это в моем коде. То же самое происходит при выборе приза или продолжении. Я знаю, что это должна быть та же ошибка. Это только первый раунд, поэтому я буду добавлять к нему больше, но мне нужно решить эту проблему, прежде чем я смогу продолжить. Заранее спасибо.Код работает, но не работает правильно. Python

import random 
import time 
import math 
print("Welcome to ATV Road Trip!!!") 
time.sleep(2) 
stuck=0 
print("Good luck because your gonna need it...") 
time.sleep(2) 
first_round=0 
second_round=0 
third_round=0 
while True: 
    print("You need 250 miles to complete the first round") 
    time.sleep(2) 
    first_number_1=random.choice([100,200,300]) 
    second_number_1=random.choice([0,10,20,30,40,50,60,70,80,90]) 
    third_number_1=random.choice([0,1,2,3,4,5,6,7,8,9]) 
    mystery_1=first_number_1+second_number_1+third_number_1 
    first_roll_1=random.choice([25,25,25,35,35,35,50,50,50,75,75,75,100,100,150,150,200,mystery_1,mystery_1,mystery_1]) 
    if first_roll_1==mystery_1: 
     print("Mystery miles!!!") 
     time.sleep(2) 
    print("You got a mile of:",first_roll_1) 
    first_round=first_round+first_roll_1 
    time.sleep(2) 
    print("Your total miles so far in this round is:", first_round) 
    time.sleep(3) 
    first_number_2=random.choice([100,200,300]) 
    second_number_2=random.choice([0,10,20,30,40,50,60,70,80,90]) 
    third_number_2=random.choice([0,1,2,3,4,5,6,7,8,9]) 
    mystery_2=first_number_2+second_number_2+third_number_2 
    first_roll_2=random.choice([25,25,25,35,35,35,50,50,50,75,75,75,100,100,150,150,200,mystery_2,mystery_2,mystery_2]) 
    print("Rolling again...") 
    time.sleep(2) 
    if first_roll_2==mystery_2: 
     print("Mystery!!!") 
     time.sleep(2) 
    print("You got a mile of:", first_roll_2) 
    first_round=first_round+first_roll_2 
    time.sleep(2) 
    print("Your total miles so far in this round is:", first_round) 
    time.sleep(3) 
    first_number_3=random.choice([100,200,300]) 
    second_number_3=random.choice([0,10,20,30,40,50,60,70,80,90]) 
    third_number_3=random.choice([0,1,2,3,4,5,6,7,8,9]) 
    mystery_3=first_number_3+second_number_3+third_number_3 
    first_roll_3=random.choice([25,25,25,35,35,35,50,50,50,75,75,75,100,100,150,150,200,mystery_3,mystery_3,mystery_3]) 
    print("Rolling again...") 
    time.sleep(2) 
    if first_roll_3==mystery_3: 
     print("Mystery!!!") 
     time.sleep(2) 
    print("You got a mile of:", first_roll_3) 
    first_round=first_round+first_roll_3 
    time.sleep(2) 
    print("You got a total milage of:", first_round) 
    time.sleep(3) 
    print("Congratulations on your total milage, but you might get stuck!") 
    time.sleep(4) 
    print("Lets find out! You have a 50/50 shot of getting stuck!") 
    time.sleep(3) 
    print("""If you get stuck, you can choose to take the lose of 50 miles or 
you can take a chance on another 50/50. If you win that, you get 50 miles added 
to your total milage for this round and no points off. However, if you lose, then 
you get 100 miles off! If you do not get stuck, nothing happens to your score.""") 
    time.sleep(10) 
    chance_1=random.randint(1,2) 
    if chance_1==1: 
     print("Congratulations on not getting stuck!!!") 
     time.sleep(3) 
    if chance_1==2: 
     print("Sorry, you got stuck!!!") 
     stuck=stuck+1 
     print("It happens, sorry buddy.") 
     time.sleep(4) 
     lose_choice_1=input("Press y to take a chance of getting out and added score or n for taking the hit:") 
     if lose_choice_1=='y' or 'Y': 
      chance_taken_1=random.randint(1,2) 
      if chance_taken_1==1: 
       print("Congratulations on getting unstuck early!") 
       print("You got 50 miles added!!!") 
       first_round=first_round+50 
       print("Your milage total is now:", first_round) 
       time.sleep(5) 
      if chance_taken_1==2: 
       print("You got stuck again!") 
       print("Ouch!!! 100 points off!!!") 
       first_round=first_round-100 
       print("Your milage total is now:", first_round) 
       time.sleep(5) 
     if not lose_choice_1=='y' or 'Y': 
      print("You have decided to take the hit!") 
      time.sleep(2) 
      first_round=first_round-50 
      print("Your mileage total is now:", first_round) 
      time.sleep(3) 
    if first_round<250: 
     print("Sorry, you lost!") 
     time.sleep(3) 
     break 
    if first_round>=250: 
     print("Congratulations!!! You have passed the first round!!!") 
     print("You can try for round 2 or you can select your prize of a rubber duck.") 
     time.sleep(3) 
     prize_pick_round_1=input("Press y to get prize and end game or any other key to continue:") 
     if prize_pick_round_1=='y' or 'Y': 
      print("You have chosen the rubber ducky!") 
      print("I hope your happy with it!") 
      print("Ending game...") 
      time.sleep(5) 
      break 
     if not prize_pick_round_1=='y' or 'Y': 
      continue 
     break 
+0

Возможный дубликат [Как Я проверяю одну переменную на несколько значений?] (Http: //stackoverflow.com/questions/15112125/how-do-i-test-one-variable-against-multiple-values) – Makoto

+0

Не совсем мое, я не думаю. –

+0

Любые идеи о том, что это может быть? –

ответ

0

тесты, как это не работает:

if lose_choice_1 == 'y' or 'Y': 

Это всегда верно. Вам нужно сделать:

if lose_choice_1 == 'y' or lose_choice_1 == 'Y': 

или вы можете сделать:

if lose_choice_1.lower() == 'y': 

Кроме этого, ваш код просто грязный и избыточный (получить ваш пробел фиксирован.) Вот переделки, которые могли бы дать вам некоторые идеи о том, как идти о написании игры, так что вы можете легко расширить его (я удалил time.sleep() вызывает сосредоточиться на самой логики.)

import random 

print("Welcome to ATV Road Trip!!!") 
print("Good luck because your gonna need it...") 

stuck = 0 
first_round = second_round = third_round = 0 

while True: 
    print("You need 250 miles to complete the first round") 

    for roll in range(3): 

     first_number = random.choice(range(100, 400, 100)) 
     second_number = random.choice(range(0, 100, 10)) 
     third_number = random.choice(range(10)) 

     mystery = first_number + second_number + third_number 

     first_roll = random.choice([25, 35, 50, 75] * 3 + [100, 150] * 2 + [200, mystery, mystery, mystery]) 

     if roll > 0: 
      print("Rolling again...") 

     if first_roll == mystery: 
      print("Mystery miles!!!") 

     print("You added a mileage of:", first_roll) 
     first_round += first_roll 

     print("Your total miles so far in this round is:", first_round) 


    print("Congratulations on your total mileage, but you might get stuck!") 

    print("Lets find out! You have a 50/50 shot of getting stuck!") 

    print("""If you get stuck, you can choose to take the loss of 50 miles or 
you can take a chance on another 50/50. If you win that, you get 50 miles added 
to your total mileage for this round and no points off. However, if you lose, then 
you get 100 miles off! If you do not get stuck, nothing happens to your score.""") 

    chance_1 = random.randint(1, 2) 

    if chance_1 == 1: 
     print("Congratulations on not getting stuck!!!") 
    else: 
     print("Sorry, you got stuck!!!") 
     print("It happens, sorry buddy.") 
     stuck += 1 
     lose_choice_1 = input("Press y to take a chance of getting out and added score or n for taking the hit: ") 

     if lose_choice_1 == 'y' or lose_choice_1 == 'Y': 
      chance_taken_1 = random.randint(1, 2) 

      if chance_taken_1 == 1: 
       print("Congratulations on getting unstuck early!") 
       print("You got 50 miles added!!!") 
       first_round += 50 
      else: 
       print("You got stuck again!") 
       print("Ouch!!! 100 points off!!!") 
       first_round -= 100 
     else: 
      print("You have decided to take the hit!") 
      first_round -= 50 

     print("Your mileage total is now:", first_round) 

    if first_round < 250: 
     print("Sorry, you lost!") 
     break 
    else: 
     print("Congratulations!!! You have passed the first round!!!") 
     print("You can try for round 2 or you can select your prize of a rubber duck.") 
     prize_pick_round_1 = input("Press y to get prize and end game or any other key to continue: ") 

     if prize_pick_round_1 == 'y' or prize_pick_round_1 == 'Y': 
      print("You have chosen the rubber ducky!") 
      print("I hope your happy with it!") 
      print("Ending game...") 
      break 
+0

Это сработало, спасибо большое. Теперь я знаю, что я сделал не так, спасибо. –

0

Вы должны быть в состоянии устранить проблему путем изменения второго вложенным, если заявление Элиф так:

import random 
import time 
import math 
print("Welcome to ATV Road Trip!!!") 
time.sleep(1) 
stuck=0 
print("Good luck because your gonna need it...") 
time.sleep(1) 
first_round=0 
second_round=0 
third_round=0 
while True: 
    print("You need 250 miles to complete the first round") 
    time.sleep(1) 
    first_number_1=random.choice([100,200,300]) 
    second_number_1=random.choice([0,10,20,30,40,50,60,70,80,90]) 
    third_number_1=random.choice([0,1,2,3,4,5,6,7,8,9]) 
    mystery_1=first_number_1+second_number_1+third_number_1 
first_roll_1=random.choice([25,25,25,35,35,35,50,50,50,75,75,75,100,100,150,150,200,mystery_1,mystery_1,mystery_1]) 
    if first_roll_1==mystery_1: 
     print("Mystery miles!!!") 
     time.sleep(1) 
    print("You got a mile of:",first_roll_1) 
    first_round=first_round+first_roll_1 
    time.sleep(1) 
    print("Your total miles so far in this round is:", first_round) 
    time.sleep(1) 
    first_number_2=random.choice([100,200,300]) 
    second_number_2=random.choice([0,10,20,30,40,50,60,70,80,90]) 
    third_number_2=random.choice([0,1,2,3,4,5,6,7,8,9]) 
    mystery_2=first_number_2+second_number_2+third_number_2 
first_roll_2=random.choice([25,25,25,35,35,35,50,50,50,75,75,75,100,100,150,150,200,mystery_2,mystery_2,mystery_2]) 
    print("Rolling again...") 
    time.sleep(1) 
    if first_roll_2==mystery_2: 
     print("Mystery!!!") 
     time.sleep(1) 
    print("You got a mile of:", first_roll_2) 
    first_round=first_round+first_roll_2 
    time.sleep(1) 
    print("Your total miles so far in this round is:", first_round) 
    time.sleep(1) 
    first_number_3=random.choice([100,200,300]) 
    second_number_3=random.choice([0,10,20,30,40,50,60,70,80,90]) 
    third_number_3=random.choice([0,1,2,3,4,5,6,7,8,9]) 
    mystery_3=first_number_3+second_number_3+third_number_3 
first_roll_3=random.choice([25,25,25,35,35,35,50,50,50,75,75,75,100,100,150,150,200,mystery_3,mystery_3,mystery_3]) 
    print("Rolling again...") 
    time.sleep(1) 
    if first_roll_3==mystery_3: 
     print("Mystery!!!") 
     time.sleep(1) 
    print("You got a mile of:", first_roll_3) 
    first_round=first_round+first_roll_3 
    time.sleep(1) 
    print("You got a total milage of:", first_round) 
    time.sleep(1) 
    print("Congratulations on your total milage, but you might get stuck!") 
    time.sleep(4) 
    print("Lets find out! You have a 50/50 shot of getting stuck!") 
    time.sleep(1) 
    print("""If you get stuck, you can choose to take the lose of 50 miles or you can take a chance on another 50/50. If you win that, you get 50 miles added to your total milage for this round and no points off. However, if you lose, then you get 100 miles off! If you do not get stuck, nothing happens to your score.""") 
    time.sleep(10) 
    chance_1=random.randint(1,2) 
    if chance_1 == 1: 
     print("Congratulations on not getting stuck!!!") 
     time.sleep(1) 
    if chance_1 == 2: 
     print("Sorry, you got stuck!!!") 
     stuck=stuck+1 
     print("It happens, sorry buddy.") 
     time.sleep(4) 
     lose_choice_1=raw_input("Press y to take a chance of getting out and added score or n for taking the hit:") 
     if lose_choice_1 == 'y' or 'Y': 
      chance_taken_1=random.randint(1,2) 
      if chance_taken_1 == 1: 
       print("Congratulations on getting unstuck early!") 
       print("You got 50 miles added!!!") 
       first_round=first_round+50 
       print("Your milage total is now:", first_round) 
       time.sleep(5) 
      else: 
       print("You got stuck again!") 
       print("Ouch!!! 100 points off!!!") 
       first_round=first_round-100 
       print("Your milage total is now:", first_round) 
       time.sleep(5) 
     if lose_choice_1 != 'y' or 'Y': 
      print("You have decided to take the hit!") 
      time.sleep(1) 
      first_round=first_round-50 
      print("Your mileage total is now:", first_round) 
      time.sleep(1) 
    if first_round < 250: 
     print("Sorry, you lost!") 
     time.sleep(1) 
     break 
    if first_round >= 250: 
     print("Congratulations!!! You have passed the first round!!!") 
     print("You can try for round 2 or you can select your prize of a rubber duck.") 
     time.sleep(1) 
     prize_pick_round_1=raw_input("Press y to get prize and end game or any other key to continue:") 
     if prize_pick_round_1 == 'y' or 'Y': 
      print("You have chosen the rubber ducky!") 
      print("I hope your happy with it!") 
      print("Ending game...") 
      time.sleep(5) 
      break 
     if prize_pick_round_1 != 'y' or 'Y': 
      continue 
     break 

Посмотрите примеры, если Элиф, иначе заявления. Когда это возможно, вы должны попытаться избавиться от как можно большего числа вложенных операторов if.

Пример:

if chance_taken1 == 2: 
    return value 
elif chance_taken1 == 1 
    return other value 
else: 
    print "invalid input" 
    return 
+0

Я смущен, потому что думал, что ты сможешь сделать еще? Тогда это должно быть elif? Итак, после моего первого заявления, тогда это должно быть elif? –

+0

это не должно быть elif, вы можете использовать else, но если вы это сделаете, тогда вы можете использовать только эти два варианта. вы можете сделать, если elif, elif, elif, else, и теперь у вас есть пять вариантов, которые вы можете выполнить в одном выражении if. – Lance

+0

Итак, у меня есть «if», а затем, если «if» не работает, у меня есть elif. Это все еще не сработало. У меня всего 2 вещи, поэтому мне не понадобится 3 или 4-е сообщение elif. Все еще путают здесь. Вы говорите, как над целым кодом, который мне нужен, если, elif, elif, а затем еще как в шаблоне? Что, если это всего лишь одно утверждение и не нуждается в elif или еще? –

Смежные вопросы