Right now, I’m making a program to find how many reams of paper you’d have to buy if you’re making a presentation to a group of people and you have to print copies of your presentation. When I go to run the program, it comes up with:
Traceback (most recent call last):
File "C:/Users/Shepard/Desktop/Assignment 5.py", line 11, in <module>
print ("Total Sheets: " & total_Sheets & " sheets")
TypeError: unsupported operand type(s) for &: 'str' and 'int'
>>>
What I’m trying to do is:
print ("Total Sheets: " & total_Sheets & " sheets")
print ("Total Reams: " & total_Reams & " reams")
Should I not be using the & operator to combine the string and integer types with print? If not, what am I doing wrong?
Here’s my whole program.
ream = 500
report_Input = int (input ("How many pages long is the report?"))
people_Input = int (input ("How many people do you need to print for? -Automatically prints five extras-"))
people = people_Input + 5
total_Sheets = report_Input * people
total_Reams =((total_Sheets % 500) - total_Sheets) / people
print ("Total Sheets: " & total_Sheets & " sheets")
print ("Total Reams: " & total_Reams & " reams")
EDIT: After I posted this I found that Jon Clements answer was the best answer, and I also found that I needed to put in an if statement to make it work. Here’s my finished code, thanks to all that helped.
ream = 500
report_Input = int (input ("How many pages long is the report?"))
people_Input = int (input ("How many people do you need to print for? -Automatically prints five extras-"))
people = people_Input + 5
total_Sheets = report_Input * people
if total_Sheets % 500 > 0:
total_Reams =(((total_Sheets - abs(total_Sheets % 500))) / ream)+1
else:
total_reams = total_Sheets / ream
print ("Total Sheets:", total_Sheets, "sheets")
print ("Total Reams:", total_Reams, "reams")
Firstly
&isn’t the concatanation operator (it’s the bitwise and operator) – that’s+, but even that doesn’t work between astrand anint…, you can usePython2.x
Python 3.x
Alternatively, you can use string formatting:
(NB: From 2.7+ you can omit the positional parameter, and just use
{}if you wanted)