Reputation: 393
I'm trying to figure out how to turn my whole square into a hollow one. The few things I've tried so far haven't been very successful as I end up getting presented with a rather distorted triangle!
This is the code I have to form my square currently ..
size = 5
for i in range(size):
print ('*' * size)
When run, this is the result ..
*****
*****
*****
*****
*****
Do I need to run if
or while
statements when size
is greater than 3 to specify a condition?
Upvotes: 3
Views: 48538
Reputation: 1
def main():
#we need the length, width and keyboard character
length = eval(input("Please enter the length of the box: "))
width = eval(input("Please enter the width of the box: "))
character = ord(input("Please enter the character you want to use: "))
#for i in range(length):
print((length)*chr(character))# thats ur top
for i in range(width - 2):
print(chr(character) + (" " * (length-2)) + chr(character))
#print((" " * (width-1)) + chr(character) )
print((length)*chr(character))
main()
Upvotes: 0
Reputation: 13
In this code, there are 2 for loops and this loops will create edges. And "else statements" represents if our point is not on the edge code will print empty character(" "). "i == 0" shows upper edge and "i == length - 1" shows bottom edge. "j == 0" will be left edge and I think you can guess what is for "j == length - 1" and "print()".
def emptySquare(length,char):
for i in range(length):
for j in range(length):
if (i == 0 or i == length-1 or j == 0 or j == length-1):
print(char,end=" ")
else:
print(" ",end=" ")
print()
Upvotes: 0
Reputation: 4766
Nice python library that will do this...
termshape - https://github.com/zvibazak/termshape
from termshape import get_rectangle
print(get_rectangle(10, 5))
* * * * * * * * * *
* *
* *
* *
* * * * * * * * * *
Upvotes: 0
Reputation: 9
You can also draw a triangle using this simple way:
n = int(input("enter num")) for i in range (n+1):
if 2>=i :
print (i * "*")
elif n == i:
print ("*" * i)
else:
print ("*"+" "*(i-2)+"*")
Upvotes: 0
Reputation: 9
Here is my python 3.6 code for drawing a square using column size and row size inputs:
column = int(input("Enter column size : "))
row = int(input("Enter row size : "))
print('* ' * column)
print(('* ' + " " * (column-2)+ '*'+'\n')*(row -2) + ('* ' * column))
Upvotes: 0
Reputation: 201
Try this:
size = 5
for i in range(1,size+1):
if (i==1 or i==size):
print("*"*size)
else:
print("*"+" "*(size-2),end="")
print("*")
output:
*****
* *
* *
* *
*****
Upvotes: 1
Reputation: 21
Here is my python code for drawing a square by entered size N.
n = int(input())
print('*' * n)
for i in range(n-2):
print ('*' + ' ' * (n-2) + '*')
print('*' * n)
Basically the first and the last print('*' * n)
are drawing the top and the bottom lines and the for cycle prints the body.
Output example: N=3
***
* *
***
Output example: N=5
*****
* *
* *
* *
*****
Upvotes: 2
Reputation: 1
size = int(input('Enter the size of square you want to print = '))
for i in range(size): # This defines the rows
for j in range(size): # This defines the columns
print('*' , end=' ') # Printing * and " end=' ' " is giving space after every * preventing from changing line
print() # Giving a command to change row after every column in a row is done
print() # Leaving one line
for k in range(size): # This defines the rows
print('* ' *size) # Defines how many times * should be multiplied
Upvotes: 0
Reputation: 1
Heres my example:
print("Enter width")
width = int(input())
print("Enter height")
height = int(input())
for i in range(height):
if i in[0]:
print("* "*(width))
elif i in[(height-1)]:
print("* "*(width))
else:
print("*"+" "*(width-2)+" *")
input()
Output: Image link
Hope this helps everyone else, who wants to leave spaces between asteriks, while printing a rectangle and if there are any mistakes in my code let me know, because I'm a beginner myself.
Upvotes: 0
Reputation: 6836
I think this is what you want to do:
m, n = 10, 10
for i in range(m):
for j in range(n):
print('*' if i in [0, n-1] or j in [0, m-1] else ' ', end='')
print()
Output:
**********
* *
* *
* *
* *
* *
* *
* *
* *
**********
You can also draw a triangle this way:
m, n = 10, 10
for i in range(m):
for j in range(n):
print('*' if i in [j, m-1] or j == 0 else ' ', end='')
print()
Output:
*
**
* *
* *
* *
* *
* *
* *
* *
**********
Upvotes: 8
Reputation: 564911
You can print out a single '*'
, followed by size-2
spaces, then a single '*'
. This will give you the "hollow" portion. The first and last lines need the full length:
size = 5
inner_size = size - 2
print ('*' * size)
for i in range(inner_size):
print ('*' + ' ' * inner_size + '*')
print ('*' * size)
Upvotes: 3