سؤال

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

هل كانت مفيدة؟

المحلول

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.

نصائح أخرى

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

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

or, you can use join:

' '.join(['*']*b)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top