Building a RGP Character

I am getting an error in my code at ‘The character name should have a name’ step. I viewed the forums, but they shows I have it correct.

def create_character(name, strength, intelligence, charisma):
if not isinstance (name, str):
return ‘The character name should be a string’
if isinstance (name, str):
return
if name == “”:
return ‘The character should have a name’

When you enter a code block into a forum post, please precede it with three backticks to make it easier to read.

You can also use the “preformatted text” tool in the editor (</>) to add the backticks.

See this post to find the backtick on your keyboard.
Note: Backticks (`) are not single quotes (').

Hi @grayfr5 ,

Why are you doing this? Your return statement is preventing the code from every reaching the next if statement.

Happy coding!

I managed to get to test step 18 and 19. I am able to tell it to print with no errors , but unable to change it to return as the instructions suggest. I performed the testing of print(repr(create_character(‘ren’, 4, 2, 1))) the result was the finished result with the word None. Is there something I am missing?

full_dot = '●'
empty_dot = '○'

def create_character(name, strength, intelligence, charisma):
    if not isinstance (name, str):
        return 'The character name should be a string'
    if name == "":
        return 'The character should have a name'
    if len(name) > 10:
        return 'The character name is too long'
    if " " in name:
       return 'The character name should not contain spaces'
    if not isinstance(strength, int) or not isinstance(intelligence, int) or not isinstance(charisma, int):
        return 'All stats should be integers'
    if strength < 1 or intelligence < 1 or charisma < 1:
        return 'All stats should be no less than 1'
    if strength > 4 or intelligence > 4 or charisma > 4:
        return 'All stats should be no more than 4'
    if not strength + intelligence + charisma == 7:
        return 'The character should start with 7 points'
    else:
        print(f'{name}\nSTR {full_dot * strength}{empty_dot * (10 - strength)}\nINT {full_dot * intelligence}{empty_dot * (10 - intelligence)}\nCHA {full_dot * charisma}{empty_dot * (10 - charisma)}')
    
create_character('ren', 4, 2, 1)

Hello @grayfr5

You are printing the string at the end of your function instead of returning it. You return nothing, that’s why you’re seeing a return type of None.

Just replace the print at the end of your function with a return and you should be good to go :slight_smile: