Search This Blog

Object Oriented Quiz Project - Python


QUIZ GAME RULES:

  1. In this quiz project, there is a total of 12 questions. And on the basis of the user's typed answer, the score will be awarded to them. Each question is of 1 mark. The answer can be either True or False. 
  2. The program is using an object-oriented approach.
  3. When a user types the wrong or right answer, share these remarks with them: 
  • If wrong: print("That's wrong")
  • If right: print("You got it right!")

When the quiz ends final output should be:

  • You've completed the quiz.
  • Your final score was: final_score/question_number

TODOs

File- main.py :

# TODO 1: the list to store the question data

# TODO 2: import all the dependent classes, methods

# TODO 3: Get the data from the dat.py and allocate the memory to the data(question, answer)

# TODO 4: Append each  allocated data to the list

# TODO 5: Pass the question list to the quiz brain for actions

# TODO 6: Continue asking questions until the end of the question list

# TODO 7: Display the final score and quiz is ended remark


Code- main.py :


from question_model import Question
from data import question_data
from quiz_brain import QuizBrain

question_bank = []


for question in question_data:
    q_text=question['text']
    q_answer=question['answer']

    new_question = Question(q_text,q_answer)
    question_bank.append(new_question)

quiz=QuizBrain(question_bank)


while quiz.still_has_questions():
    quiz.next_question()

print("You've completed the quiz.")
print(f"You final score was: {quiz.score}/{quiz.question_no}")


File- data.py :

# TODO 1: Store the dictionary data into a list.

Code- data.py :

question_data = [
    {"text""A slug's blood is green.""answer""True"},
    {"text""The loudest animal is the African Elephant.""answer""False"},
    {"text""Approximately one quarter of human bones are in the feet.""answer""True"},
    {"text""The total surface area of a human lungs is the size of a football pitch.""answer""True"},
    {"text""In West Virginia, USA, if you accidentally hit an animal with your car, you are free to take "
             "it home to eat.""answer""True"},
    {"text""In London, UK, if you happen to die in the House of Parliament, you are entitled to a state funeral.""answer""False"},
    {"text""It is illegal to pee in the Ocean in Portugal.""answer""True"},
    {"text""You can lead a cow down stairs but not up stairs.""answer""False"},
    {"text""Google was originally called 'Backrub'.""answer""True"},
    {"text""Buzz Aldrin's mother's maiden name was 'Moon'.""answer""True"},
    {"text""No piece of square dry paper can be folded in half more than 7 times.""answer""False"},
    {"text""A few ounces of chocolate can to kill a small dog.""answer""True"}


File- question_model.py :

# TODO 1: Design a template for each question to store questions and answers at the right place.

Code- question_model.py :

class Question:
    def __init__(self,q_text,q_answer):
        self.text=q_text
        self.answer=q_answer

File- quiz_brain.py :

# TODO 1: asking the questions

# TODO 2: checking if the answer was correct

# TODO 3: checking if we're at the end of the quiz

Code- quiz_brain.py :


class QuizBrain:

    def __init__(self,question):
        self.score=0
        self.question_list=question
        self.question_no=0

    def still_has_questions(self):
        return len(self.question_list) > self.question_no

    def check_answer(selfuser_answer,correct_answer):
        if user_answer.lower()==correct_answer.lower():
            print('You got it right!')
            self.score+=1
        elif user_answer=='end' or user_answer=='END':
            exit()
        else:
            print("That's wrong!")
            
            
        print(f'The correct answer was: {correct_answer}')
        print(f"Your current score is {self.score}/{self.question_no}")
        print('\n')


    def next_question(self):
        
        #if you'll not add the .text after current question then it will
        #show the memory allocatons of the object so better use
        #current_location.text to access the text of queston
        current_questionself.question_list[self.question_no]
        self.question_no+=1
        user_answer=input(f"Q.{self.question_no}{current_question.text}  (True/False): ")
        
        correct_answer=current_question.answer

        self.check_answer(user_answer,correct_answer)


Assignment 01 - Complete Java + DSA + Interview Preparation Course - Kunal Kushwaha

 

Assignment of Flow of Program - Flowcharts & Pseudocode - Video 02Kunal Kushwaha ]

Create flowchart and pseudocode for the following:

1. Input a year and find whether it is a leap year or not.

    Solution: 

Flow Chart

Pseudocode

1. Start
2. Input year in type int
3. if year%4==0 and year%100!=0 or year%400==0:
          output: Leap Year
    else:
          output: Non Leap Year
4. Stop

2. Take two numbers and print the sum of both.
    
    Solution: 

Flow Chart

Pseudocode

1. Start
2. Input num1 & num2 in type int
3. sum=num1+num2
4. output: sum
5. Stop


3. Take a number as input and print the multiplication table for it.
   
    Solution: 

Flow Chart

Pseudocode

1. Start
2. Input num in type int
3. multiplier=1
    while multiplier!=11:
            output: num*multiplier
             multiplier=multiplier+1
     end while
5. Stop


4. Take 2 numbers as inputs and find their HCF and LCM.

    Solution: Yet to do.

Flow Chart


Pseudocode


5. Keep taking numbers as inputs till the user enters ‘x’, after that print sum of all.

    Solution: 

Flow Chart





Pseudocode

1. Start
2. num = [ ] , add = 0
    while True:
          input s
          if s=='x' or s=='X':
                  for i in s:
                       add=add+int(i)
                   end for
                   output add
                    exit
           else:
                   num.append(s)
     end while
3. Stop



Techgig Geek Goddess Screening Round Solution - Python

 



Oddia and Evenia are two friends who love strings and prime numbers. Although they have the same taste and like similar things, they are enemies when it comes to even and odd numbers. Oddia likes the odd numbers and Evenia likes the even numbers. They have a problem for you to solve.

A string S of lowercase letters will be provided and you have to figure out if the given string is Prime String or not. The index starts at 1.

Prime String: A string is considered a prime string only if the absolute difference between the sum of odd indexed letters and even indexed letters is completely divisible by any of the odd prime numbers less than 10.

Note: For calculations, consider the ASCII value of lowercase letters.

Example:

String, S = abcdef

Summation of Odd Indexed letters, O = a + c + e = 97 + 99 + 101 = 297

Summation of Even Indexed letters, E = b + d + f = 98 + 100 + 102 = 300

Absolute Difference = |O-E| = |297-300| = 3

This is completely divisible by 3 and leaves 0 as remainder. Thus, the given string is a Prime String.

If the string is prime string, print Prime String otherwise print Causal String. Can you solve it?


Input Format

The first line of input consists of the number of test cases, T

Next N lines each consist of a string, S.

Note: Read the input from the console.

Constraints

1<= T <=10

2<= |S| <=10000

|S| is the length of the string.


Output Format

For each test case, print Prime String if the string is prime string otherwise print Casual String.


Sample TestCase 1

Input

2

bbae

abcdef

Output

Casual String

Prime String

Explanation

Test Case 1: 


Sum of Odd indexed letters, O = 98+97 = 195

Sum of Even indexed letters, E = 98 + 101 = 199

Absolute Difference = |195-199| = 4

This is not divisible by any of the odd prime numbers. The given string is a Casual String.

----------------------------------------

Solution:

def check():

    
    num = int(input())

 

    for i in range(num):
        st = input()
        i = 0
        even_num = 0
        odd_num = 0
        for char in st:
            if i % 2 == 0:
                even_num+=ord(char)
            else:
                odd_num+=ord(char)
            i+=1
            
        ab_diff = abs(even-odd)
    
        if ab_diff % 3 == 0 or ab_diff % 5 == 0 or ab_diff % 7 == 0:
            print("Prime String")
        else:
            print("Casual String")

check()



Object Oriented Coffee Maker Machine : Python

 

Object Oriented Coffee Maker Machine : Python
Object Oriented Coffee 
Maker Machine
( Python Based ) 

The functionality given to the virtual coffee machine is a replica of our actual coffee machine. But, this oops-oriented coffee machine can only take order one out of latte/espresso/cappuccino.

The code is designed after determining 5 conditions to serve the coffee:

  • Turn On & Off the machine
  • Print the available quantity of the resources & money
  • Process the made payment by the user
  • Here, check out the given payment is ok?
  • Serve the coffee
Before solving the above-mentioned conditions, the modules containing these functionalities are imported. And the functionality of these modules can be understood from below given class's documentation:

MenuItem Class

Attributes:

        

  • name

(str) The name of the drink.

e.g. “latte”

  • cost

(float) The price of the drink.

e.g 1.5

  • ingredients

(dictionary) The ingredients and amounts required to make the drink.

e.g. {“water”: 100, “coffee”: 16}

Menu Class

Methods:

  • get_items()

Returns all the names of the available menu items as a concatenated string.

e.g. “latte/espresso/cappuccino”

  • find_drink(order_name)

Parameter order_name: (str) The name of the drinks order.

Searches the menu for a particular drink by name. Returns a MenuItem object if it exists, otherwise returns None.

CoffeeMaker Class

Methods:

  • report()

Prints a report of all resources.

e.g.

Water: 300ml

Milk: 200ml

Coffee: 100g

  • is_resource_sufficient(drink)

Parameter drink: (MenuItem) The MenuItem object to make.

Returns True when the drink order can be made, False if ingredients are insufficient.

e.g.

True

  • make_coffee(order)

Parameter order: (MenuItem) The MenuItem object to make.

Deducts the required ingredients from the resources.

MoneyMachine Class

Methods:

  • report()

Prints the current profit

e.g.

Money: $0

  • make_payment(cost)

Parameter cost: (float) The cost of the drink.

Returns True when payment is accepted, or False if insufficient.

e.g. False


Final Code Structure

1. Turn On & Off the machine

is_on=True

while is_on:
options = menu.get_items()
choice = input(f"What would you like? ({options}):").lower()

if choice =='off':
is_on =
False
2. Print the available quantity of the resources & money - The final report

from menu import Menu, MenuItem
from coffee_maker import CoffeeMaker
from money_machine import MoneyMachine


coffee = CoffeeMaker()
money = MoneyMachine()
menu = Menu()

is_on = True

while is_on:
options = menu.get_items()
choice = input(f"What would you like? ({options}):").lower()

if choice =='off':
is_on = False
elif choice == 'report':
money.report()
coffee.report()
3. & 4. Process the made payment by the user. Also, check out the given payment is ok?

from menu import Menu, MenuItem
from coffee_maker import CoffeeMaker
from money_machine import MoneyMachine


coffee = CoffeeMaker()
money = MoneyMachine()
# menuitem = MenuItem()
menu = Menu()
is_on=True

while is_on:
options = menu.get_items()
choice = input(f"What would you like? ({options}):").lower()

if choice =='off':
is_on = False
elif choice == 'report':
money.report()
coffee.report()
else:
drink = menu.find_drink(choice)
if coffee.is_resource_sufficient(drink):
if money.make_payment(drink.cost):
5. Serve the coffee

from menu import Menu, MenuItem
from coffee_maker import CoffeeMaker
from money_machine import MoneyMachine


coffee = CoffeeMaker()
money = MoneyMachine()
menu = Menu()

is_on = True

while is_on:
options = menu.get_items()
choice = input(f"What would you like? ({options}):").lower()

if choice =='off':
is_on = False
elif choice == 'report':
money.report()
coffee.report()
else:
drink = menu.find_drink(choice)
if coffee.is_resource_sufficient(drink):
if money.make_payment(drink.cost):
coffee.make_coffee(drink)
Thank You :)

Solution to Exploring Data Types TechGig - 02


Exploring Data Types TechGig

Exploring Data Types TechGig


The question asked to check out the data type of the user input. It was quite tricky as python by default converts the type of the input into type str. So, I was halfway blank like what approach to use.


Further, I googled & ended up with this article: How You Make Sure input() Is the Type You Want It to Be in Python Unluckily, it introduced me with nothing new concept but, gave me a path to go & explore libraries. And while looking out for them I discovered regex that is regular expressions in python and to this, I thought of adding exception handling.

Finally, trial & test lead me to a code that actually passed out all the test cases. Seriously, Exception handling is a wingman.

Also, keeping below mentioned five custom inputs in mind, I had been able to see the clear picture:

Custom Input 1: Hello Engineer Bae
Expected Output: This input is of type string.

Custom Input 2: 22.33
Expected Output: This input is of type Float.

Custom Input 3: 33
Expected Output: This input is of type Integer.

Custom Input 4: @@
Expected Output: This is something else.

Custom Input 5:             #space as input since, space is a character
Expected Output: This input is of type string.

Here we go. The code that is the answer to the exploring data types - day 02 question of techgig

Snake Water Gun Game - My Solution to CodewithHarry Snake Water Gun Game


This is an ancient game that is full of fun and is generally played between two players. Somewhat it is similar to Rock, Paper & Scissor.

Good Points

  1. This game can be played without the need for a second human opponent.
  2. The second opponent in this game will be a computer.
  3. This exercise is part of code with harry's Python Tutorial for Beginners
  4. This code is completely written by me.

How does this game work?

The game is developed for single-player only with easy & hard mode.

  1. Easy mode allows you to give a total of 10 chances to score better.
  2. Hard mode allows you to give a total of 5 chances to score better.

And the Rules are-

The game keeps running until you don't reach the last value of your selected mode(Easy or Hard).

1. Water will win from the gun, the gun will win from snake, the snake will 
win from water.
2. Out of user or computer whoever scores the highest, wins the match.
3. "Tie" is given if both of them chooses the same shape & no score is rewarded
to any player.
4. Scores are given on the basis of each chance's winner.


Final Code/Solution to Code with Harry's Project 1 - Snake, Water, Gun Game at Timestamp: 06:52:30
 
import random
import os


logo = '''
███ █   █ ███ █ █ ███   █   █ ███ ███ ███ ███   ███ █ █ █   █   ███ ███ █   █ ███ 
█   ██  █ █ █ █ █ █     █   █ █ █  █  █   █ █   █   █ █ ██  █   █   █ █ ██ ██ █   
 █  █ █ █ █ █ ██  ███   █ █ █ █ █  █  ███ ██    █   █ █ █ █ █   █   █ █ █ █ █ ███ 
  █ █  ██ ███ █ █ █     ██ ██ ███  █  █   █ █   █ █ █ █ █  ██   █ █ ███ █   █ █   
███ █   █ █ █ █ █ ███   █   █ █ █  █  ███ █ █   ███ ███ █   █   ███ █ █ █   █ ███ 
'''

# Generated Ascii art from here, https://ascii.co.uk/text & font is Maxiwi

snake = ''' 
      {0O}
      \__/
      /^/
     ( (             
     \_\_____
     (_______)
    (_________()Oo
'''

water='''

_____________________________________________
 -   ~~~       -    ----     -       -      -   
  ~    --     ~         ~    --       --  ``
---            ---          ---       / ~
     ----  ~     ----        ----      ~  / 
-----         -----         ----- /   '   '~    
  ~   .-~~-.      ~    ------     / ~   ~    
___________________________________________

'''

gun= '''
  .-.____________________.-.
     ___ _.' .-----.    _____________|======+
    /_._/   (      |   /_____________|      
      /      `  _ ____/                     
     |_      .\( \\                         
    .'  `-._/__`_// 
  .'       |""""'
 /        /
/        |
|        '
|         \
`-._____.-'
'''

end_game= False
easy=10
hard=5
user_score=0
computer_score=0


shapes = [snake, water , gun]


def shape_choice(shape):
    '''Allows to choose shape for a computer'''
    return random.choice(shape)


def game_decision(usr_choose_shape,computer_choose_shape,shapes,mode):
    '''Water will win from gun, gun will win from snake, snake will win from water.
    Snake--Water--Gun'''

    global user_score
    global computer_score

    if shapes[usr_choose_shape] == shapes[0] and computer_choose_shape == shapes[1]:
        print(f"This chance is won by YOU :)")
        user_score+=1
        print(f'\t Your Score: {user_score}')
        print(f"\t Computer's Score: {computer_score}")
        print(f" You're left with {mode} chance(s).")
        
    elif shapes[usr_choose_shape]==shapes[2] and computer_choose_shape == shapes[0]:
        print("This chance is won by YOU :)")
        user_score+=1
        print(f'\t Your Score: {user_score}')
        print(f"\t Computer's Score: {computer_score}")
        print(f" You're left with {mode} chance(s).")
        
    elif shapes[usr_choose_shape]==shapes[1] and computer_choose_shape == shapes[2]:
        print("This chance is won by YOU :)")
        user_score+=1
        print(f'\t Your Score: {user_score}')
        print(f"\t Computer's Score: {computer_score}")
        print(f" You're left with {mode} chance(s).")
    else:
        print('This chance is won by COMPUTER :(')
        computer_score+=1
        print(f'\t Your Score: {user_score}')
        print(f"\t Computer's Score: {computer_score}")
        print(f" You're left with {mode} chance(s).")
        



os.system('cls')
print(logo)
user=input("Choose mode: 'E' for easy & 'H' for hard: ").lower()

if user == 'E':
    print(f'\tYou have {easy} chances to win over your opponent.')
    mode=easy
else:
    print(f'\tYou have {hard} chances to win over your opponent.')
    mode=hard


def game(mode):
    
    global user_score
    global computer_score
    global easy
    global hard

    while mode!=0:

        
        # user and computer choice -> 
        

        usr_choose_shape = int(input("\n\tType 1 for Snake, 2 for Water & 3 for Gun: "))
        computer_choose_shape = shape_choice(shapes)

        

        os.system('cls')
        mode-=1

        print(logo)


        print(f"Your Choice: {shapes[usr_choose_shape-1]} ")
        
        print(f"Computer Choice: {computer_choose_shape}" )
        

        if shapes[usr_choose_shape-1] == computer_choose_shape:
            print("Nobody wins. It's a TIE!")
            print(f'\t Your Score: {user_score}')
            print(f"\t Computer's Score: {computer_score}")
            print(f" You're left with {mode} chance(s).")
            
        else:
            s=game_decision(usr_choose_shape-1,computer_choose_shape,shapes,mode )




        

    os.system('cls')
    print(logo)

    if user_score > computer_score:
        print(f"Your Final Score: 0{user_score}")
        print(f"Computer's Final Score: 0{computer_score}")
        print(f'Congratulations, you are an overall winner with score: 0{user_score}')
    elif user_score == computer_score:
        print(f"Your Final Score: 0{user_score}")
        print(f"Computer's Final Score: 0{computer_score}")
        print(f"Both share a equal score. It's a DRAW!")
    else:
        print(f"Your Final Score: 0{user_score}")
        print(f"Computer's Final Score: 0{computer_score}")
        print(f'Opponent wins with score: 0{computer_score}')


game(mode)
 



Practice questions for Python

ques: 1] Read a number & check whether it is pos. or negative? 

Solution:

try:

    num= int(input("Enter a number:"))

    if(num>0):

        print("number is positive")

    else:

        print("number is negative")


except:

    print("Please enter a number only. Thank You!")


Output: Enter a number:-1

number is negative


ques: 2] Read a number check whether it is odd or even?

Solution:

try:

    num= int(input("Enter a number:"))

    if(num%2==0):

        print("number is even")

    else:

        print("number is odd")


except:

    print("Please enter a number only. Thank You!")

Output:

python odd_even.py

Enter a number:100

number is even

ques: 3] Read the age of a person & display whether that person can vote or can not vote.

Solution:

try:

    Age= int(input("Enter your age:"))

    if(Age>=18):

        print("You're eligible to vote in elections!")

    elif(Age<=0):

        print("Please enter the correct age. Thank You!")

    else:

        print("You are under 18. You cannot Vote. Better Luck next time!")


except:

    print("Please enter a number only. Thank You!")

Output:

python castavote.py

Enter your age:-25

Please enter the coorect age. Thank You!

Ques 4] Read two numbers & display largest number

Solution:

try:

    num1,num2 = map(int, input().split())

    #map allocates the numbers at the correct position. Note that we don’t have to explicitly specify split(‘ ‘)

    # because split() uses any whitespace characters as a delimiter as default.

    if (num1<num2):

        print(num2,'is the largest')

    else:

        print(num1,'is the largest')

except:

    print("Please enter the correct values!")


Output: python largestnum.py
3 5555
5555 is the largest