I have a homework to make an arrow letter with nested for loop in Python. The goal is to make an arrow that starts with input letter and the input maximum size; for example, input C for letter and 5 for size the output should be like this
C
D D
E E E
F F F F
G G G G G
H H H H H
I I I I
J J J
K K
L
I'm having a problems with making it starts with the input letter, and make it have maximum for 2 rows. This is what I got so far (since when I change the variable to make it starts with input letter the code is error).
letter = (input("What is the starting letter? "))
size = int(input("What is the maximum size of the arrow? Please enter an integer: "))
val = 65
for x in range(0,size):
for y in range (0,x 1):
char = chr(val)
print (char, end = " ")
val = val 1
print()
for x in range(size,0,-1):
for y in range (0,x-1):
char = chr(val)
print (char, end = " ")
val = val 1
print()
When I run this, it look like this
What is the starting letter? C
What is the maximum size of the arrow? Please enter an integer: 5
A
B B
C C C
D D D D
E E E E E
F F F F
G G G
H H
I
CodePudding user response:
the reason why it starts with A
is because u have val
set to 65 i.e ascii value for A
use
val = ord(letter)
instead of
val = 65
this should now work as intended
ord - returns the string to its ascii value of the string
CodePudding user response:
The letter
variable has not been used in the rest of the code. You should do something like:
letter = (input("What is the starting letter? "))
size = int(input("What is the maximum size of the arrow? Please enter an integer: "))
val = ord(letter)
for x in range(0,size):
for y in range (0,x 1):
char = chr(val)
print (char, end = " ")
val = val 1
print()
for x in range(size,0,-1):
for y in range (0,x-1):
char = chr(val)
print (char, end = " ")
val = val 1
print()
Example output
What is the starting letter? C
What is the maximum size of the arrow? Please enter an integer: 5
C
D D
E E E
F F F F
G G G G G
H H H H
I I I
J J
K
Note that, this won't work with an input like Z
as the character and 4
as the number.
Wrong Output
What is the starting letter? Z
What is the maximum size of the arrow? Please enter an integer: 4
Z
[ [
\ \ \
] ] ] ]
^ ^ ^
_ _
`
CodePudding user response:
I missed the point in setting variables, at first. The result is all correct now, and it looks like this
letter = (input("What is the starting letter? "))
size = int(input("What is the maximum size of the arrow? Please enter an integer: "))
val = ord(letter)
for x in range(0,size):
for y in range (0,x 1):
char = chr(val)
print (char, end = " ")
val = val 1
print()
for x in range(size,0,-1):
for y in range (0,x):
char = chr(val)
print (char, end = " ")
val = val 1
print()
changing the val = 65
to val = ord(letter)
and change thex-1
to x
to make 2 rows of maximum. Thank you for all the answers.