samedi 25 mars 2017

Python Area Trainer

User inputs one answer from multiple choice for which they think is the correct area for the dimensions of a chosen shape, the program is supposed to check whether the answer is correct, however, at the moment it keeps outputting that the area is incorrect, even when it is correct.

import random
area = 0
choice = 0
correct = False
username = input("please input a username ")
password = input("please input a password ")
incorrect = 0
options = []
while len(password) < 6:
    print("Your password has to be at least 6 digits long ")
    password = input("please input a password ")

while username == password:
    print("your password can't be the same as your username ")
    password = input("please input a password ")

repass = input("please re-enter your password ")

while repass != password:
    repass = input("please re-enter your password ")

def play(choice, area, options):    
    while choice == 0:
        try:
            choice = int(input("Pick a shape: 1. triangle, 2.rectangle, 3.circle "))
        except ValueError:
            print("you must enter a number ")
            continue

    while area == 0: #if they pick an inncorrect number one than once is will replay error until they pick a correct one
        if choice == 1:
            print("you chose to the area of a triangle ")
            base = random.randint(1,30)
            height = random.randint(1,30)
            area = base * height // 2
            working = ("base * height // 2")
            print("the base of the triangle is",base,"cm and the height is",height,"cm")

        elif choice == 2:
            print("you chose to calculate the area of a rectangle ")
            base = random.randint(1,30)
            height = random.randint(1,30)
            while base == height: #stops the rectangle from becoming a square
                height = random.randint(1,30)
            area = base * height
            working = ("base * height")
            print("the base of the rectangle is",base,"cm and the height is",height,"cm")

        elif choice == 3:
            print("you chose to calculate the area of a circle ")
            radius = random.randint(1,30)
            rsquared = radius * radius
            pi = 3.141592653
            area = pi * rsquared 
            working = ("pi * rsquared")
            print("the radius of your circle is",radius,"cm")

        else: #stop's programme from breaking
            print("you must pick a number out of 1,2 and 3 ")
            try:
                choice = int(input("Pick a shape: 1. triangle, 2.rectangle, 3.circle "))
            except ValueError:
            continue

options.append(area)
while len(options) < 4:
    randans = random.randint(1,900)
    options.append(randans)
random.shuffle(options) # puts the answers in random order in array so its never the same letter for the answer
print("1.",options[0],"2.",options[1],"3.",options[2],"4.",options[3])
return options, area

play(choice, area, options)
print(options)   
def guess_ans(options, area, incorrect):
    answer = int(input("input your answer "))
    if answer == 1 and options[0] == area:
        print("true")
    elif answer == 2 and options[1] == area:
        print("true")
    elif answer == 3 and options[2] == area:
        print("true")
    elif answer == 4 and options[3] == area:
        print("true")
    else:
        print("false")
        incorrect += 1
    return incorrect
guess_ans(options, area, incorrect)

if incorrect == 1:
    print("the correct formula for working out the answer is",working)
    guess_ans(options, area, incorrect)
elif incorrect < 1:
    playagain = str(input("would you like to play again? Y or N "))
    if playagain in ['y', 'Y', 'yes', 'Yes', 'YES']:
        play(choice, area, options)
        guess_ans(options, area, incorrect)

Aucun commentaire:

Enregistrer un commentaire