jake84
jake84

Reputation: 37

Including the last value in a range loop Python 3

I am having issues trying to get my code to print the last value of the range when I am running a loop. Here is the problem I was given with my code at the end:

start_character = "A"
end_character = "Z"

#You may modify the lines of code above, but don't move them!
#When you Submit your code, we'll change these lines to
#assign different values to the variables.

#Print all the letters from start_character to end_character,
#each on their own line. Include start_character and
#end_character themselves.
#
#Remember, you can convert a letter to its underlying ASCII
#number using the ord() function. ord("A") would give 65.
#ord("Z") would give 90. You can use these values to write
#your loop.
#
#You can also convert an integer into its corresponding ASCII
#character using the chr() function. chr(65) would give "A".
#chr(90) would give "Z". So, for this problem, you'll need
#to convert back and forth between ordinal values and
#characters based on whether you're trying to loop over
#numbers or print letters.
#
#You may assume that both start_character and end_character
#are uppercase letters (although you might find it fun to
#play around and see what happens if you put other characters
#in instead!).


#Add your code here! With the original values for
#start_character and end_character, this will print the
#letters from A to Z, each on their own line.

for char in range(ord(start_character), ord(end_character)):
    for h in chr(char):
        print(h)

Here is the output I receive:

A B C D E F G H I J K L M N O P Q R S T U V W X Y

I know I am missing something simple, and adding +1 to end_character didn't work due to it not being a string.

Upvotes: 0

Views: 1716

Answers (3)

grantslape
grantslape

Reputation: 95

I think you just need to make sure you are adding 1 to the ordinal, not the char. Additionally you don't need the inner for loop, all you need to do is cast the current index back to a character with chr():

for char in range(ord(start_character), ord(end_character)+1):
    print(chr(char))

Upvotes: 3

Chinnmay B S
Chinnmay B S

Reputation: 115

use ord(end_character)+1 in for loop

ord(character): this function returns integer value (ASCII) add 1 to it.

Upvotes: 0

Killian Fortman
Killian Fortman

Reputation: 106

In the range loop you can add the +1 to the end_character like so:

for char in range(ord(start_character), ord(end_character) + 1):

ord in python turns the character into an integer.

Upvotes: 0

Related Questions