Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Python

tashzol
tashzol
1,354 Points

I created two functions, each of them animating a group of strings of text. They won't run when functions are called.

I hope my question is relevant here, although it is not directly derived from a particular Treehouse exercise, but it's a side-project or experiment of mine, let's say, as a part of learning process. So, I created a little program that should animate a couple of blocks of ASCII characters, taking advantage of termcolor for representing colours in text. I am using the terminal on my Arch Linux box to run it. Each animation per se, when run in a separate program, runs perfectly, as I intended to, but when I try to put them all in one program, and present a choice which would allow to load either of these, based on user input, nothing happens, nothing is printed on the screen, no errors neither. I can'get it right. I tried a dozen of possible combinations of using if and else, then if and elif, using if and elif and else, using procedure instead of defining the functions and calling them, but nothing seems to work. Does anyone have any idea what I am doing wrong here? Thanks!

from termcolor import colored
import os
import time

def animate_Beastie():
  distanceFromTop = 20
  while True:
    print("\n" * distanceFromTop)

    print(colored("               ,        ,", "red"))
    print(colored("              /(        )`", "red"))
    print(colored("              \ \___   / |", "red"))
    print(colored("              /- _  `-/  '", "red"))
    print(colored("             (/\/ \ \   /\\", "red"))
    print(colored("             / /   | `    \\", "red"))
    print(colored("             O O", "green"), colored("   ) /    |", "red"))
    print(colored("             `-^--'`<     '", "red"))
    print(colored("            (_.)  _  )   /", "red"))
    print(colored("             `.___/`    /", "red"))
    print(colored("               `-----' /", "red"))
    print(colored("  <----.", "yellow"), colored("     __ / __   \\", "red"))
    print(colored("  <----|====O)))==) \) /====", "yellow"))
    print(colored("  <----'", "yellow"), colored("    `--' `.__,' \\", "red"))
    print(colored("               |        |", "red"))
    print(colored("                \       /", "red"))
    print(colored("           ______", "blue"), colored(" (_  / \______", "red"))
    print(colored("         ,'  ,-----'   |", "blue"), colored("        \\", "red"))
    print(colored("         `--{__________)", "blue"), colored("        \/", "red"))
    print(colored("                      tlil", "green"), colored("=]", "red"), colored("beastie", "green"))

    time.sleep(0.20)
    os.system('clear')
    distanceFromTop -= 1
    if distanceFromTop < 0:
      distanceFromTop = 20

def animate_Invader():
  distanceFromTop = 0
  distanceFromLeftSide = 0
  step = 1

  while True:
    print("\n" * distanceFromTop)
    print((" " * distanceFromLeftSide) + "          (-.)")
    print((" " * distanceFromLeftSide) + "          cc )")
    print((" " * distanceFromLeftSide) + "        3-n-(")
    print((" " * distanceFromLeftSide) + "         _(|/`->)")
    distanceFromLeftSide +=step
    if distanceFromLeftSide>20 or distanceFromLeftSide<=0:
      step = -step
      distanceFromTop += 2
      if distanceFromTop >20:
        distanceFromTop = 0
        distanceFromLeftSide = 0
        step = 1
    time.sleep(0.05)
    os.system('clear')

choice = input("Enter (A) for Beastie or (B) for Invader: ")

if choice.lower == "a":
    animate_Beastie()
elif choice.lower == "b":
    animate_Invader()

2 Answers

lower should be followed by parentheses

if choice.lower() == "a":
  animate_Beastie()
elif choice.lower() == "b":
  animate_Invader()
tashzol
tashzol
1,354 Points

Thanks, it worked! :-)