Python Forum
Volleyball game - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Homework (https://python-forum.io/forum-9.html)
+--- Thread: Volleyball game (/thread-6860.html)

Pages: 1 2


RE: Volleyball game - j.crater - Dec-16-2017

You still have that scorevisitor > scorehome in wrong_score which serves no purpose :)

You get this error because function match doesn't return anything.
scorehome,scorevisitor=match(Home, Visitor,i+1)
match function needs to return values that will be assigned to scorehome and scorevisitor

And about your looping until user enters proper scores, look into continue instead of break.


RE: Volleyball game - DrewD - Dec-17-2017

Still struggling...
def match(Home, Visitor, matchnum):
      print("Match", str(matchnum))
      scorehome = int(input("Enter the number of points "+Home+" got in Match "+str(matchnum)+": "))
      scorevisitor = int(input("Enter the number of points "+Visitor+" got in  Match "+str(matchnum)+": "))   
      return scorehome, scorevisitor
      
      

def printScoreCard(Home,Visitor,winhome,winvisitor):
      print(Home,winhome)
      print(Visitor, winvisitor)

      
def wrong_score():
 
      if (scorehome > scorevisitor and scorehome < 25):
            print("One team must score 25 points. Please enter scores again.")
            return False
      elif (scorevisitor > scorehome and scorevisitor < 25):
            print("One team must score 25 points. Please enter scores again.")
            return False
      elif (scorehome > scorevisitor and scorehome - scorevisitor < 2):
            print("One team must win by 2 points. Please enter scores again.")
            return False
      elif (scorevisitor > scorehome and scorevisitor - scorehome < 2):
            print("One team must win by 2 points. Please enter scores again.")
            return False
      elif scorehome > scorevisitor:
            winhome=winhome+1
            return True
      else:
            winvisitor= winvisitor+1
            return True
      

      
def startgame():
      print("Welcome to the volleyball score program.")
      Home = input("Enter the home team's name: ")
      Visitor = input("Enter the visitor's team name: ")
      winhome = 0
      winvisitor = 0
      for i in range(5):
            while True:
                  scorehome,scorevisitor=match(Home, Visitor,i+1)
                  if wrong_score():
                        continue
                  elif  scorehome > scorevisitor:
                     winhome=winhome+1
                  else:
                     winvisitor=winvisitor+1
                  
                  
                    
                  printScoreCard(Home,Visitor,winhome,winvisitor)
            
      if winhome>winvisitor:
            print(Home+" wins the game!")
      else:
            print(Visitor+" wins the game!")      
startgame()



RE: Volleyball game - Terafy - Dec-17-2017

Found a problem.
The function "wrong_score()" had an error. You did not pass "scorehome" and "scorevisitor". Also winhome is not defined in the function.


RE: Volleyball game - Terafy - Dec-17-2017

Anyway, for the "wrong_score" function. I suggest you to:
1) pass the "scorehome" and "scorevisitor" into the function.
2) replace this part of your code.
      elif scorehome > scorevisitor:
            winhome=winhome+1
            return True
      else:
            winvisitor= winvisitor+1
            return True
There is an error here, because "winhome" and "winvisitor" are not a local variable. Don't try to make the function calculate, just stick with checking the scores. So remove "winhome = winhome + 1" and "winvisitor= winvisitor+1" and tidy up the code with an else-statement.

For the "startgame()" function, we went through that the "wrong_score()" should just return a True or False, so we don't need the continue. But you need change the elif and make it to another if-statement to add the scores when the when the "wrong_score()" returns True it would add the winning teams points.
                  if wrong_score():
                        continue
                  elif  scorehome > scorevisitor:
                        winhome=winhome+1
                  else:
                        winvisitor=winvisitor+1



RE: Volleyball game - DrewD - Dec-17-2017

I am able to run the program, but it only records scores if the wrong scores are put in first and then corrected. If I put in correct scores initially it does not record them. Ugh!
def match(Home, Visitor, matchnum):
      print("Match", str(matchnum))
      scorehome = int(input("Enter the number of points "+Home+" got in Match "+str(matchnum)+": "))
      scorevisitor = int(input("Enter the number of points "+Visitor+" got in  Match "+str(matchnum)+": "))   
      return scorehome, scorevisitor
      return wrong_score(scorehome, scorevisitor)
      
      
      

def printScoreCard(Home,Visitor,winhome,winvisitor):
      print(Home,winhome)
      print(Visitor, winvisitor)

      
def wrong_score(scorehome, scorevisitor):
  
      if (scorehome > scorevisitor and scorehome < 25):
            print("One team must score 25 points. Please enter scores again.")
            return False
      elif (scorevisitor > scorehome and scorevisitor < 25):
            print("One team must score 25 points. Please enter scores again.")
            return False
      elif (scorehome > scorevisitor and scorehome - scorevisitor < 2):
            print("One team must win by 2 points. Please enter scores again.")
            return False
      elif (scorevisitor > scorehome and scorevisitor - scorehome < 2):
            print("One team must win by 2 points. Please enter scores again.")
            return False
      else:
            return True
      
      
      
      

      
def startgame():
      print("Welcome to the volleyball score program.")
      Home = input("Enter the home team's name: ")
      Visitor = input("Enter the visitor's team name: ")
      winhome = 0
      winvisitor = 0
      for i in range(5):
            while True:
                  scorehome,scorevisitor=match(Home, Visitor,i+1)
                  if wrong_score(scorehome, scorevisitor):
                        break
                  
                  if  scorehome > scorevisitor:
                     winhome=winhome+1
                  else:
                     winvisitor=winvisitor+1
            printScoreCard(Home,Visitor,winhome,winvisitor)
            
      if winhome>winvisitor:
            print(Home+" wins the game!")
      else:
            print(Visitor+" wins the game!")      
startgame()



RE: Volleyball game - Terafy - Dec-17-2017

Well... this prove I gave you a bad explanation... I was going for
if wrong_score(scorehome, scorevisitor):
    if  scorehome > scorevisitor:
        winhome=winhome+1
    else:
        winvisitor=winvisitor+1
    break



RE: Volleyball game - DrewD - Dec-17-2017

Finally....it works! Thank you for all your help!
def match(Home, Visitor, matchnum):
      print("Match", str(matchnum))
      scorehome = int(input("Enter the number of points "+Home+" got in Match "+str(matchnum)+": "))
      scorevisitor = int(input("Enter the number of points "+Visitor+" got in  Match "+str(matchnum)+": "))   
      return scorehome, scorevisitor
      return wrong_score(scorehome, scorevisitor)
      
      
      

def printScoreCard(Home,Visitor,winhome,winvisitor):
      print(Home,winhome)
      print(Visitor, winvisitor)

      
def wrong_score(scorehome, scorevisitor):
  
      if (scorehome > scorevisitor and scorehome < 25):
            print("One team must score 25 points. Please enter scores again.")
            return False
      elif (scorevisitor > scorehome and scorevisitor < 25):
            print("One team must score 25 points. Please enter scores again.")
            return False
      elif (scorehome > scorevisitor and scorehome - scorevisitor < 2):
            print("One team must win by 2 points. Please enter scores again.")
            return False
      elif (scorevisitor > scorehome and scorevisitor - scorehome < 2):
            print("One team must win by 2 points. Please enter scores again.")
            return False
      else:
            return True
      
      
      
      

      
def startgame():
      print("Welcome to the volleyball score program.")
      Home = input("Enter the home team's name: ")
      Visitor = input("Enter the visitor's team name: ")
      winhome = 0
      winvisitor = 0
      for i in range(5):
            while True:
                  scorehome,scorevisitor=match(Home, Visitor,i+1)
                  if wrong_score(scorehome, scorevisitor):
                        if  scorehome > scorevisitor:
                           winhome=winhome+1
                        else:
                           winvisitor=winvisitor+1
                        break   
            printScoreCard(Home,Visitor,winhome,winvisitor)
            
      if winhome>winvisitor:
            print(Home+" wins the game!")
      else:
            print(Visitor+" wins the game!")      
startgame()



RE: Volleyball game - Terafy - Dec-17-2017

Congrats! I knew it would of work hahaha!...

sorry trying to be funny there.