Question

Having bit of trouble with a program i made. i am getting it to display a diamond but i have a problem, here is my code:

a = input("Enter width: ")
a = int(a)
b = a
for i in range(a):
  i = i + 1
  b = a - i
  text = " " * b + " " + "* " * i
  print(text[:-1])
for i in range(a):
  i = i + 1
  b = a - i
  text = " " * i + " " + "* " * b
  print(text[:-1])

Thanks for all the help! this is the answer

Était-ce utile?

La solution

That's because print doesn't return the string, it returns None.

>>> print(print("foo"))
foo
None

Perhaps you wanted to do this:

text = " " * i + " " + "* " * b
print (text[:-1])

To remove the trailing white-space better use str.rstrip:

>>> "foo ".rstrip()
'foo'

help on str.rstrip:

>>> print (str.rstrip.__doc__)
S.rstrip([chars]) -> str

Return a copy of the string S with trailing whitespace removed.
If chars is given and not None, remove characters in chars instead.

Autres conseils

You can write your slice like this (not on the print return value):

("* "*b)[:-1]

or, you can use join:

' '.join(['*']*b)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top