Hi all,

I am new Phython user and started using Python 2.7 just a couple days ago. I have written this code which is working, But when user put in correct code loop is not breaking ?? just wondering if it could be improved and what book would you recommend for Python 2.7 or 3? and do you know when Python 3 will be available? also hear about something called gygame (I think) which should work with python but I could not get this work with Python ! any help here would greatful recieved..

INPUT TEST>>>PYTHON 2.7: DATE OF CODING 11.12.2010


#set up verible for shopping

item =
price = [10, 50, 35, 75]
gold=100

# display items for sale

print ' I have the following items for sale'
print
print item[0] + ' at ' + str(price[0]) + ' Gold bits'
print
print item[1] + ' at ' + str(price[1]) + ' Gold bits'
print
print item[2] + ' at ' + str(price[2]) + ' Gold bits'
print
print item[3] + ' at ' + str(price[3]) + ' Gold bits'


#buying a item and deducting money
while True:

input = raw_input("\nPress, D, S, B or A to purchuse the item or Z to leave: ")
if input == 'd' or input =='D':
print "\nYou broght a " + item[0] + ' at ' + str(price[0])
elif input =='s' or input =='S':
print "\nYou broght a " + item[1] + ' at ' + str(price[1])
elif input =='b' or input =='B':
print "\nYou broght a " + item[2] + ' at ' + str(price[2])
elif input =='a' or input =='A':
print "\nYou broght a " + item[3] + ' at ' + str(price[3])
elif input =='z' or input == 'Z':
print '\nBye for now'
break;
else:
print '\nYou need to Enter D, S, B, A OR Z. TRY AGAIN!'

print "\nYou have Gold " + str(gold-price[0]) + ' bits left'


Thanks for you time

Stephen

Edited 5 Years Ago by FAITH2011: Spelling Mistakes

First: Please use the (CODE) button when posting code. It does all good things, no bad things, AND it maintains indentation, which is critical for Python.

Second: I would use a dictionary like this:

items = {
'd': ("Dagger", 10),
's': ("Sword", 50),
 # and so forth
}
# and later when looking up the response
choice = raw_input(prompt).lower()[0]
if not choice in items:
  # boo, hiss
print(formatstring%items[choice])

I don't see why the loop doesn't break, but without indentation, it is very hard to be sure.

Edited 3 Years Ago by mike_2000_17: Fixed formatting

Hi griswolf,

Thankyou for you kind reply, sorry I did put the code in correctly it my first day on here and still unsure how this site works. I will try you code enter tomorrow night and get back to you. Once again thank you for you help

Stephen

i will wait till you put your code in the code tag tomorrow before i comment.
;)

Edited 5 Years Ago by richieking: n/a

Here the code in right format I hope, Sorry about earlier code but it is my first day

#set up verible for shopping

item = ['Dagger', 'Sword', 'Bow', 'Armour']
price = [10, 50, 35, 75]
gold=100

# display items for sale

print ' I have the following items for sale'
print
print item[0] + ' at ' + str(price[0]) + ' Gold bits'
print
print item[1] + ' at ' + str(price[1]) + ' Gold bits'
print
print item[2] + ' at ' + str(price[2]) + ' Gold bits'
print
print item[3] + ' at ' + str(price[3]) + ' Gold bits'


#buying a item and deducting money
while True:
   
   input = raw_input("\nPress, D, S, B or A to purchuse the item or Z to leave: ")
   if input == 'd' or input =='D':
      print "\nYou broght a " + item[0] + ' at ' +  str(price[0])
   elif input =='s' or input =='S':
      print "\nYou broght a " + item[1] + ' at ' +  str(price[1])
   elif input =='b' or input =='B':
      print "\nYou broght a " + item[2] + ' at ' +  str(price[2])
   elif input =='a' or input =='A':
      print "\nYou broght a " + item[3] + ' at ' +  str(price[3])
   elif input =='z' or input == 'Z':
       print '\nBye for now'
       break;
else:
   print '\nYou need to Enter D, S, B, A OR Z.   TRY AGAIN!'

print "\nYou have Gold " + str(gold-price[0]) + ' bits left'

Edited 5 Years Ago by FAITH2011: n/a

your line 35 is incorrectly indented, though Python 2.7 for some odd reason accepts it as syntactically correct. I don't see why the loop doesn't break: My little test case worked ok.

As griswolf pointed to you about you using dict to save your item values its one of the best advice for you.

Your data are more static and moreoevr you have paired them in a staic way which you pull the results from the lists. Its not efficient. You need a key and value stuff, a hash data type which is a dict in python.

Besides you code loop works fine with me.

Work on that.. ;)

Edited 5 Years Ago by richieking: n/a

Hi all,

Tried the code above supplied by giswolf and got an error message, not saying there is anything wrong with coding just my lack of knowledge with Python, I expect. Keep saying prompt is not defined. Well I need to learn more Now using Python 3.1.3. so please be gentle with me as I know very little about Phyton, But I am learning.. Thank you

Edited 5 Years Ago by FAITH2011: spelling

well of course I did not write a complete program, and so I never defined the variable prompt="You may buy a Dagger, Sword, Bow or Armor, or 'z' to quit: " nor the variable formatstring which will look something like "You bought %s for %d gold" In Python 3.x you will need to change to call input(prompt) rather than raw_input(prompt) You will also need to treat print as a function instead of an operator. The rest should work as expected.

Edited 5 Years Ago by griswolf: n/a

This question has already been answered. Start a new discussion instead.