x = 1
while x <= 100:
y = str(x)
if x % 3 == 0:
y = 'Fizz'
if x % 5 == 0:
y += 'Buzz'
if x % 7 == 0:
y += 'Foo'
if x % 11 == 0:
y += 'Bar'
print y
x += 1
raw_input('Press enter to exit...')
It's quite simple.
You start off by defining X
as an integer
, then you increese it in a while
loop.
At the very beginning of each iteration you define y = x
which essentially tells python to set y
into an integer.
Then depending on what x modulus <nr>
you got, you add a string
to the integer called y
(yes, it is an integer as well).. This leads to an error because it's an illegal operation because of the way a INT
and a WORD
works, they're just different so you need to treat one of them prior to merging them into the same variable.
How to debug your own code: Try doing print(type(x), type(y))
and you get the differences of the two variables.. Might help you wrap your head around this.
The solution is y = str(x)
.
So, no.. Y is NOT a string to begin with
Because you redefine y
each iteration of your while
loop.
y = x
<-- Makes Y
a int, because that's what x
is :)
Also, try using .format()
x = 1
while x <= 100:
y = x
if x % 3 == 0:
y = '{0}Fizz'.format(x)
if x % 5 == 0:
y += '{0}Buzz'.format(x)
if x % 7 == 0:
y += '{0}Foo'.format(x)
if x % 11 == 0:
y += '{0}Bar'.format(x)
print y
x += 1
raw_input('Press enter to exit...')
Another personal observation is that if x % 3 == 0
you replace y = ...
, but in all other if-cases you append to y
, why is this? I left it just the way you gave us the code but either do elif
on the rest or why not concade on all
if's