On 8/2/2011 11:39 PM, Alexander Quest wrote:
Hey Bob- thanks for the reply. Here is a more complete part of that
code section (the ellipses are parts where I've deleted code because I
don't think it's important for this question):
Please always reply-all so a copy goes to the list.
Thanks for posting more code & traceback
I forgot to mention earlier - tell us which version of Python you are
using (this looks like version 3)
You did not answer all my questions! How come? Please do so now.
_____________________________________________________________
attributes = [("strength", 0), ("health ", 0), ("wisdom ", 0),
("dexterity", 0)]
.....
.....
.....
print(
"""
1 - Strength
2 - Health
3 - Wisdom
4 - Dexterity
Any other key - Quit
"""
)
selection = input("Selection: ")
if selection == "1" or selection == "2" or selection == "3" or
selection == "4":
print("You have ", points, "points available.")
how_many = input("How many would you like to add to
this attribute?: ")
while how_many < 0 or how_many > 30 or how_many ==
"": # Because max points available is
30, and entering less than 0 does not make sense.
print("Invalid entry. You have ", points, "points
available.") # If the user enters a
number less than 0, greater than 30, or just presses enter, it loops.
how_many = input("How many would you like to add
to this attribute?: ")
print("Added ", points, "to ",
attributes[selection-1][0], "attribute.") #
Here is where I try to add the number of points to the value, based on
what the user entered.
points = points -
how_many
# I subtract the number of points added from the total points available.
attributes[selection-1][1] +=
how_many
# I add the number of points the user selected to the variable selected.
__________________________________________________________________________
Here's the traceback I get:
Traceback (most recent call last):
File "C:\Users\Alexander\Desktop\Python Practice\Ch05-2.py", line
54, in <module>
print("Added ", points, "to ", attributes[selection-1][0],
"attribute.")
TypeError: unsupported operand type(s) for -: 'str' and 'int'
_________________________________________________________________________
Thanks for any help. I understand that I can't change tuples directly,
but is there a way to change them indirectly (like saying
attribute.remove[x] and then saying attribute.append[x] with the new
variable? But this seems to take out both the string and the value,
when I only want to increase or decrease the value for one of the 4
strings, strength, health, wisdom, or dexterity).
DON'T USE TUPLES. WHY DO YOU INSIST ON THEM?
What does the error message( unsupported operand type(s) for -:
'str' and 'int') tell you?
Why would selection be a string rather than an integer?
This has to do with how you obtain selection from the user.
Why did you expect to be able to alter the value of a tuple
element? Tuples are immutable! Use a list instead.
--
Bob Gailer
919-636-4239
Chapel Hill NC
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor