2011-02-07 6 views
1

Mon code python est le suivant mais cela ne fonctionnera pas.Pourquoi mon code python ne fonctionnera pas correctement?

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!" 

Dans la partie SystemExit de relance(), je veux la personne à ne pas être en mesure de continuer si elles ne devinent le dernier bit. Il ne démarre même pas, mais quand je sors la raise SystemExit(), ça marche mais ça continue, même s'ils ne l'ont pas deviné correctement. Qu'est-ce que je mets au lieu de faire ce que je veux?

+0

Vous avez seulement besoin d'importer au hasard une fois, habituellement fait en haut du script. – Benjamin

+1

@Benjamin: ressemble à beaucoup de copier-coller. La déclaration 'import' n'est pas le seul bit qui pourrait utiliser un peu de refactoring ... –

+1

Oui, mais laissez les débutants faire une erreur. Sur la correction à la fois, c'est mieux. Vous apprenez en améliorant le code merdique qui fonctionne en code juste qui devrait probablement fonctionner pour super code qui ne fonctionne pas pour corriger le code qui fonctionne :-) –

Répondre

4

Cette ligne devrait être mis en retrait de sorte qu'il fait partie du bloc d'autre, sinon il sera toujours exécuté même si la conjecture est correcte:

raise SystemExit() 

Il pourrait aussi être préférable d'appeler sys.exit() à la place.

Aussi, si vous voulez faire quelque chose deux fois, au lieu de copier et de coller votre code, vous devez créer une fonction et l'appeler deux fois:

def play(): 
    # ... 

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

Pour quitter un script en Python, vous voulez juste utiliser sys.exit :

import sys 
code = 0 
sys.exit(code) 

Le code est le code retour de votre script. Il devrait être zéro si votre script n'a pas fait d'erreur, n'importe quel nombre de 1 à 127 sinon. L'erreur de l'utilisateur n'est pas une erreur de script, donc si votre utilisateur ne devine pas, mettez 0.

+0

Etre ou ne pas être ... Exister un script? :) – Benjamin

+0

C'est la question que vous posez sur stackoverflow. Fixé. –

Questions connexes