'Letter Arrow with For Loop in Python
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
Solution 1:[1]
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
Solution 2:[2]
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
[ [
\ \ \
] ] ] ]
^ ^ ^
_ _
`
Solution 3:[3]
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-1to x to make 2 rows of maximum. Thank you for all the answers.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Ryuga |
| Solution 2 | Amirhossein Kiani |
| Solution 3 | Beau Diaz |
