简体   繁体   中英

Why won't my python code run properly?

My python code is the following but it won't work.

import random

secret = random.randint (1, 99)
guess = 0
tries = 0

print "AHOY! I'm the Dread Pirate Oliver and I have a secret!"
print "I will tell you where my treasure is buried if you can guess the number that I'm thinking of."
print "It is a number from 1 to 99. I'll give you 6 tries."

while guess != secret and tries < 6:
    guess = input ("What's yer guess? ")
    if guess < secret:
        print "Too low ye scurvy dog!"
    elif guess > secret:
        print "Too high, landlubber!"
    tries = tries + 1

if guess == secret:
    print "Avast! Ye got it! Found ma secret number, ye did!"
    print "THE FIRST WORD IS: Awesome"
else:
    print "No more guesses! Better luck next time, Matey!"
    print "Ma secret number wuz", secret
raise SystemExit()

import random

secret = random.randint (1, 99)
guess = 0
tries = 0

print "AHOY THERE!"
print "ME AGAIN"
print "I will tell you the second word if you can guess the number that I'm thinking of."
print "It is a number from 1 to 99. I'll give you 6 tries."

while guess != secret and tries < 6:
    guess = input ("What's yer guess? ")
    if guess < secret:
        print "Too low ye scurvy dog!"
    elif guess > secret:
        print "Too high, landlubber!"
    tries = tries + 1

if guess == secret:
    print "Avast! Ye got it! Found ma secret number, ye did!"
    print "THE SECOND WORD IS: Land"
else:
    print "No more guesses! Better luck next time, Matey!"
    print "Ma secret number wuz", secret
raise SystemExit()    

import random

secret = random.randint (1, 3)
guess = 0
tries = 0

print "AHOY! One more thing"
print "It is a number from 1 to 3. I'll give you 1 try."

while guess != secret and tries < 1:
    guess = input ("What's yer guess? ")
    if guess < secret:
        print "Too low ye scurvy dog!"
    elif guess > secret:
        print "Too high, landlubber!"
    tries = tries + 1

if guess == secret:
    print "Avast! Ye got it! Found ma secret number, ye did!"
    print "It's buried in the sand at 36 degrees North, 48 degrees east."
else:
    print "No more guesses! Better luck next time, Matey!"
    print "Ma secret number wuz", secret
raise SystemExit()
import random

secret = random.randint (1, 99)
guess = 0
tries = 0
print "Congratz. You won!"

In the raise SystemExit() part, I want the person to not be able to continue if they didn't guess the last bit. It doesn't even start, but when I take out the raise SystemExit(), it works but it keeps going, even if they didn't guess it correctly. What do I put instead to do what I want?

This line should be indented so that it is part of the else block, otherwise it will always be executed even if the guess is correct:

raise SystemExit()

It might also be better to call sys.exit() instead.

Also if you want to do something twice, instead of copying and pasting your code you should create a function and call it twice:

def play():
    # ...

number_of_games = 2
for i in range(number_of_games):
    play()

To exit a script in Python, you just want to use sys.exit :

import sys
code = 0
sys.exit(code)

Code is the return code of your script. It should be zero if your script made no error, any number from 1 to 127 otherwise. User error is not a script error, so if your user don't guess, just put 0.

You should try to create a function instead of copy-pasting so much, that might resolve part of the issue. Some of this code is outdated I think...

We want to put this in the while loop below:

if guess == secret:
    print "Avast! Ye got it! Found ma secret number, ye did!"
    print "THE FIRST WORD IS: Awesome"
else:
    print "No more guesses! Better luck next time, Matey!"
    print "Ma secret number wuz", secret
raise SystemExit()

This in the while loop above it:

while guess != secret and tries < 6:
    guess = input ("What's yer guess? ")
    if guess < secret:
        print "Too low ye scurvy dog!"
    elif guess > secret:
        print "Too high, landlubber!"
    tries = tries + 1

So make a function called guess_check() with this code

Eg:

secret = 3
tries = 0
guess = 0

def guess_check():
    if int(guess) < secret:
        print ("Too low, ye scurvy dog!")
    elif int(guess) > secret:
        print ("Too high, landlubber!")
    elif int(guess) == secret:
        print ("Avast! Ye got it! Found ma secret number, ye did!")
        print ("THE FIRST WORD IS: Awesome")
    elif tries == 6:
        print ("No more guesses! Better luck next time, Matey!")
        print ("Ma secret number wuz", secret)


while guess != secret and tries < 6:
    guess = input ("What's yer guess? ")
    tries = tries + 1
    guess_check();
    if guess == secret:
        break
    elif tries == 6:
        break
    else:
        pass

This code is just a starting point, You will need to tweak it to fit your needs, i'm not doing your hobby for you :) but hope this helps!!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM