2016-08-15 3 views
-4

python 3.4.3でこの変更されたロードトリップを作成しようとしていますが、私の望むように動作しません。問題は、プレイヤーが立ち往生のためにヒットしたときに「y」以外の何かを選択したときに、プレーヤが彼/彼女がいないときにチャンスを取ることを望んでいるということである。私はelseステートメントを使用しようとしましたが、私はその前にnotを試しました。あなたは私のコードでそれを見るでしょう。この同じことは賞品を選んだり、続けたりするために起こります。私はそれが同じエラーでなければならないことを知っています。これはちょうど最初のラウンドなので、私はそれをさらに追加しますが、私はこれを続行する前に解決する必要があります。前もって感謝します。コードは機能しますが、正しい方法では動作しません-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

可能性のある重複した[やる方法私は複数の値に対して1つの変数をテストしますか?](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': 

それは常にtrueです。あなたが実行する必要があります。

あなたが行うことができます
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

あなたが変更することで、あなたの問題を解決することができるはず文はとても似のelifする場合は、ネストされた第二:

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 

が、もしELIF、else文の例を検索します。 可能な限り多くのネストされたifステートメントを取り除こうとする必要があります。

例:このような

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

他にもできると思って混乱していますか?それはその後elifでなければならない?だから私の最初のif文の後、それはelifでなければならないのですか? –

+0

それはelifである必要はありませんが、elseを使用することはできますが、そうであれば、これらの2つのオプションしかありません。 if、elif、elif、elif、elseとすることができます。そして、if文の中で5つのオプションを反復処理できます。 – Lance

+0

だから、私は "if"を持っていて、 "if"がうまくいかなければ、私はelifを持っています。それでも動作しませんでした。私はそこに2つのものしか持っていないので、3番目または4番目のelifのステートメントは必要ありません。まだここで混乱している。あなたは私が持っている必要があるコード全体のように言っていますか?elif、elif、そうでなければパターンのようですか?それが単なるif文で、elifやその他のものは必要ない場合はどうでしょうか? –

関連する問題