Greetings,

Beautiful! Thank you SO much for all the variations.
I'm so sure I'll have much to learn from them. This
is exactly the kind of stuff I'm currently studying.

I have a question for the list.
After I posted my snippet, I added time to import,
and a time.sleep(1) line to the code. The reason
I did this is because I'm under the (possibly mistaken?)
impression that random uses the computer
time as a random number generator 'seed',
for generating pseudo-random numbers?
Perhaps this is a question for the 'language lawyers'?

Cheers!
-- 
bhaaluu at gmail dot com

On 7/26/07, Tiger12506 <[EMAIL PROTECTED]> wrote:
> Note that OP constructed his list so that some values are weighted according
> to the user's decision (Aggressive or defensive), Just let's not forget that
> brilliance~ ;-)
>
> Suggestions below.
>
> > Here is a snippet that might work for one batter:
> >
> > #!/usr/bin/env python
> > # cricket.py
> > # 2007-07-26
> > # b h a a l u u at g m a i l dot c o m
> > import random
> >
> > def batterUp():
> >  score=[1,2,3,4,6,'Out']
> >  totalScore=0
> >  while 1:
> >    hit=random.choice(score)
> >    if hit != score[-1]:
> >      totalScore=totalScore+hit
> >      print "You batted",hit,"Total runs:",totalScore
> >    else:
> >      totalScore=totalScore+0
> >      print "You're OUT! Total runs:",totalScore
> >      break
> >
> > batterUp()
> > # end criket.py
> >
> > Notice that the list, score , has integers and a string in it.
> > I use the integers to add to the running score, and use the
> > string 'Out' to stop the while loop. I just did this, and it ran
> > okay the few times I tried it. YMMV. =)
>
> This is one situation where the python concept of ask forgiveness later is
> convenient.
> For example.
>
> ###########
> def play():
>   score = [1,2,3,4,6,'Out']
>   totalScore = 0
>   while 1:
>     hit = random.choice(score)
>     try:
>       totalScore += int(hit)
>       print "You batted a  %s; Total runs: %d" % (hit,totalScore)
>     except ValueError:
>       print "You're OUT! Total runs:", totalScore
>       break
> ############
>
> And a way that is even better of which I just thought ;-)
> Use a special value to mean 'out'. This avoids the string problem.
> A value of zero makes the comparisons with if even simpler.
>
> #########
> def play():
>   scores = [1,1,2,2,3,4,6,0,0]  #Zero means "out"
>   totalScore = 0
>   while 1:
>     hit = random.choice(scores)
>     totalScore += hit
>     if hit:       # The magic check - even makes sense, if no hit, then
> "out"
>       print "You batted a %d, Total runs: %d" % (hit, totalScore)
>     else:
>       print "You're OUT! Total runs: %d" % totalScore
> ##########
>
> A sneaky application of a form of encapsulation that OOP people like to use.
> ;-)
> (So you only have to have one play function)
>
> #######
> aggr_scores = [1,2,3,4,4,6,6,0,0,0]
> defe_scores = [1,1,1,2,2,3,4,6,0,0]
>
> user_choice = raw_input("Which?\n\t(a) Aggressive\n\t(b) Defensive\n\nYour
> choice: ")
> if user_choice == 'a':
>   scores = aggr_scores
> elif user_choice == 'b':
>   scores = defe_scores
> else:
>   print "Please choose a or b"
>
> play()
> ########
>
> Or even better.
>
> #########
> score_lookup = {'a':[1,2,3,4,4,6,6,0,0,0],
>                            'b':[1,1,1,2,2,3,4,6,0,0]}
>
> # raw_input here
>
> scores = score_lookup[user_choice]
> play()
> #############
>
> HTH,
> JS
>
> _______________________________________________
> Tutor maillist  -  Tutor@python.org
> http://mail.python.org/mailman/listinfo/tutor
>
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to