Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  16 2100
hallo, jeg har laget dette og skjønner ikke hva jeg skal gjøre for at den går til "hovedmeny" etter at jeg har gjettet riktig tall.

http://pastebin.com/f56c95dd5
Python/pseudokode:

Kode

while 1:
	print('hovedmeny')
	a = randint # Tallet
	while guess != a: #Kjør når guess er feil
		guess = input('gjett, lol: ') # Kjør input inn i "gjett"-variabelen
Du kjører spørringen helt til de gjetter riktig. Da avslutter loopen, og kjører loopen med hovedmenyen omigjen.
Sist endret av Ozma; 10. februar 2009 kl. 18:42.
det skjønte jeg ikke helt, skal jeg bytte ut HELE med den der? eller skal jeg bare bytte ut

Kode

elif c == a:
                        print "Gratulerer! Du gjettet riktig, du brukte", d, "forsøk."
                        loop = 0
med det du skreiv?
Du må skjønne poenget bak det, istedenfor å bare kopiere kode.

Pseudokode: (http://en.wikipedia.org/wiki/Pseudocode hvis du ikke visste det)

Kode

LOOP:
	tall = 5
	
	WHILE gjetter NOT tall: #Gjør dette hvis du ikke har gjettet riktig
		gjetter = input('Hva tror du tallet er')
Hvis brukeren svarer feil, fortsetter while-loopen. Hvis brukeren har riktig, fortsetter du ut av loopen. Men siden du er inni en loop som varer evig allerede, dukker du opp på toppen igjen, der menyen blir vist. Slik fortsetter det.

Hvis du ikke forstår det foreslår jeg at du leser mer om programmering/Python.
Sist endret av Ozma; 10. februar 2009 kl. 18:52.
Sitat av The Freak Vis innlegg
Hvis du ikke forstår det foreslår jeg at du leser mer om programmering/Python.
Vis hele sitatet...
jeg gjør jo dette for å lære meg Python, og det er jo litt kjedelig
å bare sitte og lese en bok eller noe sånt uten å prøve å lage noe selv. og det er ikke like lærerikt, men jeg skal lese mer før jeg poster noe neste gang
Hvis boken ikke inneholder oppgaver foreslår jeg også at du får deg en bedre bok for nybegynnere :P
jeg har ikke brukt bok, jeg har lest guider på nettet :P
Da foreslår jeg deg at du bestiller deg en bok En god bok er essensielt når en skal begynne med et (nytt) programmeringsspråk.
Trigonoceps occipita
vidarlo's Avatar
Donor
Python-tradisjonen er vel gjerne noko a'la følgjande:

Kode

tall = 12
while True:
    print "Gjett et tall:"
    gjett = int(raw_input())
    if (gjett == tall):
        break
Edit: ja - det er horribelt at python ikkje har do while-løkker. Horribelt.
Sist endret av vidarlo; 10. februar 2009 kl. 19:49.
Slik som dette?

Kode

# coding=iso-8859-1

def gjettelek():
	while 1:
		print("Datamaskinen har valgt et tilfeldig tall mellom null og hundre. Du skal gjette hvilket tall det er.")
		tallet = random.randint(0, 100);
		
		riktig = 0
		
		while not riktig:
			gjetter = input("\nJeg tipper: ")
			
			if gjetter < tallet:
				print("Du tippet for lavt.")
			if gjetter > tallet:
				print("Du tippet for høyt")
			if gjetter == tallet:
				print("Du tippet riktig! Omigjen?")
				riktig = 1
				
import random
gjettelek()
Hvis du skal tilbake til hovedloopen utenfor denne funksjonen må du fjerne while-loppen som alltid er sann.
Dette er virkelig lærerikt!

Den til The Freak funker, men det kan kanskje en idé å legge inn en "Restart" som starter på nytt, og en som tar imot tomme svar.
Sist endret av bobbo; 10. februar 2009 kl. 20:32.
takk folkens jeg fikk det til å fungere til slutt
Edit: ja - det er horribelt at python ikkje har do while-løkker. Horribelt.
Vis hele sitatet...
En riktig konstruert while loop kan gjøre det samme.
http://users.aims.ac.za/~mackay/pyth.../dowhile.shtml

Må man ha do while løkker i python,det er et lite triks kan skrives sånn.

Kode

while True:
    do_something()
    if condition():
        break
Tar litt mere om do while,bare for og forklare litt hva dette er.
Nei ikke for deg slashdot du vet vel dette bedere enn de fleste.

Her en do while loop i C++
Do while gjentar alltid viss betingelsen er sann.
Så viss num != 100 da gjentas do while.

Kode

#include <iostream> 
using namespace std; 
 
int main() 
{ 
  int num; 
 
  do { 
    cout << "Enter et nummer <100 for stop>: "; 
    cin >> num; 
  } while(num != 100); 
 
  return 0; 
}
Hvordan skrive dette i python?
Jo en enkel løsning.

Kode

tall = ""
while tall != "100":
    tall = raw_input("Enter et nummer <100 for stop> ")
Ouput lik for begge

Kode

Enter et nummer <100 for stop> 5
Enter et nummer <100 for stop> 25
Enter et nummer <100 for stop> 75
Enter et nummer <100 for stop> 100 #stop
Jeg ser ikke det som noe problem med python i forhold til do while løkker.
Sist endret av snippsat; 11. februar 2009 kl. 05:03.
Tenke vi kunne implementere noen nye funksjoner.
For og diskutere og lære litt sammen,jeg har skrevet og testet litt av listen jeg har lagd under.
Poster koden etter vært viss det ikke er noe innresse for dette.

Vi må også prøve og fange opp de feil som lages ved taste feil.
Eksp:
jeg tipper: (kun enter)
SyntaxError: unexpected EOF while parsing

jeg tipper:test (enter)
NameError: name 'test' is not defined

Dette kalle "Catching Exceptions" for dem som vil søke.
Hint løse ofte med "try/except"

Kode

def meny_start():
    # starte nytt spill
    # se score fra siste runde
    pass

def gjettelek():
    # kode som er skrevet
    # sette inn kode som tar med anntall gjettet forsøk
    # Eventuelt sette max anntall gjette forsøk,viss ikke greier det sende til start eller ut.
    pass

def read_file():
    # Åpne en fil vi kan kalle den score.txt
    # Viser score fra siste runde
    pass

def save_file():
    # Lagere forsøk til score.txt
    # Få variabel forsøk fra gjettelek() | litt og tenke på
    pass

def meny_slutt():
    # Lagre score
    # Meny start
    # Avslutt
    pass
Ja skrev inn det jeg listet opp i siste post.
Nå er hvor mange førsøk man bruker på og gjette tallet tatt med.
Forsøk kan nå lagers til disk,blir lagret i den mappe du kjører fra.
Viss man ønsker og lagre filen til en bestemt plass eksp: c:\spill\
c:\\spill\\score.txt

Viser litt hvordan man lagrer en variabel til disk ok leser den igjen,har også brukt global for og få tries ut av gjette_tall().
Global blir synlig for alle funksjoner,dette må man være klar over.
Kan være en kilde til feil viss man har flere variabler i større program.

Funksjon gjette_tall() kan man kræsje ved taste feil.
Får se om jeg tar meg tid til og se på dette.
Det handler om fange opp exceptions som jeg postet før.

Kode

# -*- coding: cp1252 -*-
import random

def meny_start():
    while True:
        print'********************************'
        print'*Gjette pa tall spill | ver 0.1*'
        print'********************************'
        print '(1) Starte nytt spill'
        print '(2) Se score fra siste spill'
        print "(q) Quit" 
        choice = raw_input('Enter et valg: ')
        if choice == '1':
            gjette_tall()
        elif choice == '2':
            read_file(), meny_start()         
        elif choice == 'q': 
            exit()              
            read_file(), meny_start()                  
        else:
            print "Feil valg",choice                           
 
def gjette_tall():
    global tries 
    tallet = random.randint(0, 99)    
    gjett = 0                                 
    tries =  0
    print'Datamaskinen har valgt et tilfeldig tall mellom 0 og 100\nDu skal gjette hvilket tall det er'
    
    while tallet != gjett:
        gjett = input ("\nJeg tipper: ")        
        if gjett < tallet:
            print("Du tippet for lavt.")
        elif gjett > tallet:
            print("Du tippet for høyt")
        tries += 1         
    print 'Riktig tall er gjettet:',tallet ,'på:',tries, 'forsøk\n',meny_slutt()
    return tries
                         
def read_file():        
    text_file = open("score.txt", "r")
    whole_thing = text_file.read()
    print whole_thing   
    
def save_file(tries):
    out_file = open("score.txt", "w")
    out_file.write('Din score fra siste spill var: ')
    out_file.write(str(tries))
    out_file.close()    

def meny_slutt():
    while True:
        print '(1) lagrer score'
        print '(2) start meny'
        print '(q) Quit'
        choice = 0
        choice = input('Enter et valg: ')
        if (choice == 1):
            save_file(str(tries))
            print 'Score er lagret'        
        elif (choice == 2):
            meny_start()                    
        elif (choice == q):
            print 'Game over'
        else:
            print 'Feil valg',choice     
 
meny_start()
Sist endret av snippsat; 14. februar 2009 kl. 21:04.
Det neste blir å finne en algoritme for å treffe riktig tall på minst mulig forsøk. Jeg bruker maksimum 7 forsøk hver gang. Noen som klarer bedre?
Ja algoritme en utfører når en svarer på disse spørsmål kalles "binary search"
Kan skrives andrer veien så en får pcen til og utføre det samme.
Noe så enkelt som dette "mid = (high + low)/2" i en loop.
Da skal man greie det på 7 forsøk når tallet er 100.
Øker man tallet til 5000 vil dette gi 13 forsøk for og finne rett tall.

Ja litt kode som som gir litt straff viss en ikke greier det på 7 forsøk.
Har satt inn et argument max,dette gjør at en kan sette max forsøk når en kaller passord().
Viser litt åssen en kan bruke os modulen til python til og utføre windows kommandoer.
Viss noen kjører denne og ikke greier det,så er det og fyre opp cmd og skrive shutdown -a for og stoppe nedtellingen.

Kode

# -*- coding: cp1252 -*- 
import os
import random 
  
def passord(max):
    print 'Hemmlig passord er mellom 1 <-> 100'
    print 'Du har kun 7 forsøk,eller stopper windows'
    passord = random.randrange(0, 99) 
    tries = 0 
    gjette = "" 
    while gjette != passord: 
        gjette = int(raw_input('Passord: ')) 
        if gjette > passord: 
            print 'For høyt: ' 
        elif gjette < passord: 
            print 'For lavt: '
        tries += 1 
        if tries >= max: 
            print 'For mange forsøk!'
            os.system('shutdown -s -f')                   
    print 'Du greide det på:',tries, 'forsøk'
    raw_input('Press enter to exit ')    

#-Kaller passord funksjon | forsøk kan økes eller senkes-#      
passord(7)