Well... til a� breyta k��anum sem minnst, �� v�ri l�klega best � a� nota bara
"True" sem skilyr�i fyrir while lykkjuna, og f�ra "elif tries > 7:" hlutann efst
� lykkjuna og fjarl�gja "el"-i�.... �.e.
#!/usr/bin/env python3.1
#
# Guess my number game
import random
randomint = random.randint(1,100)
tries = 1
while True:
if tries > 7:
print("You suck!")
break
guess = int(input("Guess a number between 1 and 100: "))
if guess < randomint:
print("Higher...")
tries += 1
continue
elif guess > randomint:
print("Lower...")
tries += 1
continue
else:
print("Correct answer!")
print("You only needed", tries, "tries!")
break
kv. T�mas �rni
On 04/30/2011 10:26 PM, Sigur�ur J�nsson wrote:
> S�lir,
> Er n�r a� reyna a� l�ra Python og er � vandr��um me� eitt verkefni� �
> b�kinni. H�n �tti a� h�tta eftir 7 tilraunir og segja ni�randi or� um
> notandann en �g f� ekki elif statementi� til a� virka. While virkar
> me� �vi a� h�tta eftir 7 tilraunir en �etta er ekki r�tt. Ef �g set
> while True �� kemur infinite loopa.
Fyrst er athugað hvort guess sé minni en randomint og svo hvort hún er
stærri en randomint þannig að ekki reynir á " elif tries > 7: " nema
guess sé akkúrat rétt tala. Ekki alveg rétt lógík í þessu.
kv.Bjarni
2011/4/30 Sigurður Jónsson <sigg...@gmail.com>:
> --
> You received this message because you are subscribed to "Reykjavik Python User Group" group.
> To unsubscribe, send an email to rpug-uns...@googlegroups.com
if satt/ósatt:
þetta getur gerst
elif satt/ósatt:
eða þetta getur gerst
else:
eða þetta
en það geta ekki tvö af þeim gerst eða fleiri. Þannig þegar þú gerir
fyrstu tvær athuganirnar og önnur hvor þeirra er rétt þá athugar
forritð ekki skilyrðin sem þú setur seinna og framkvæmir því ekki það
sem er þar þó að fullyrðingin sé rétt (tries > 7).
-Kjartan
2011/5/1 Sigurður Jónsson <sigg...@gmail.com>:
--
You received this message because you are subscribed to "Reykjavik Python User Group" group.
To unsubscribe, send an email to rpug-uns...@googlegroups.com
Það er ekki miklu við að bæta, en langar samt að benda á nokkra hluti
hvernig vanari forritari myndi skrifa.
Varðandi vandamálið sem þú spurðir um, þá er besta python lausnin að
mínu mati sú sem Baldur Þór benti á, að nota else-blokk á while. Else
blokkin er aðeins keyrð þegar skilyrðið í while hausnum verður ósatt,
en ekki þegar þú "breikar" út úr lykkjunni (virkar semsagt alveg eins
og else blokk í if-else).
Inn í if blokkunum ertu með kóða sem er endurtekinn, "tries += 1".
Þetta bendir til þess að kóðinn eigi frekar (lógískt) heima sem
óskilyrtur kóði í lykkjunni. Continue er einnig óþarft, því í báðum
tilfellum er það það síðasta sem lykkjan gerir. Stundum getur þó verið
gott að setja það inn fyrir lesanleika, ef um mörgt
if-elif-elif-elif-... er að ræða.
Hækkunina á tries myndi ég setja sem næst input skipuninni, því það er
í raun og veru það sem notandinn skynjar sem "try". Það er gott að
koma sér upp vana að raða kóðanum upp lógískt þannig, jafnvel þó
niðurstaðan yrði sú sama, því raunverulegur kóði mun breytast í
framtíðinni og þá er gott að hafa hluti sem lógískt eiga saman á sama
stað, t.d. svo ef öðrum er breytt að þá gleymist ekki að endurskoða
hinn.
Ég myndi því raða þessu þannig:
import random
randomint = random.randint(1,100)
tries = 0
while tries <= 7:
guess = int(input("Guess a number between 1 and 100: "))
tries += 1
if guess < randomint:
print("Higher...")
elif guess > randomint:
print("Lower...")
else:
print("Correct answer!")
print("You only needed", tries, "tries!")
break
else:
print("You suck")
kv,
Arnar
2011/5/1 Sigurður Jónsson <sigg...@gmail.com>:
2011/5/2 Arnar Birgisson <arn...@gmail.com>:
> while tries <= 7:
ætti að vera while tries < 7:
kv,
Arnar
--