[Tutor] Help with function scoping

Richard Mcewan richmcewan at icloud.com
Wed Mar 22 17:17:43 EDT 2017


I wonder if you can help. 

I'm confused about how functions should work. Below is some code I write to check my understanding. 

I'm expecting two functions to be defined. Then called. One returns a random number. The other user input (guessing the number). 

I expect the return values to act like variables that I can use in a while loop. 

The programme asks for the user input then crashes. The error report says 'NameError:The name 'userGuess' is not defined. 

My understanding is wrong somewhere. I thought functions would allow me to return values I could use elsewhere without having to define them initially. I.e. Encapsulation. 

I've looked for other examples but get the same issue. I expect a function to return a variable I can use elsewhere. Not sure how to do. In the case below I'm not sure how I can use the work of the function elsewhere. 

Advice welcome. 


Using Pythonista App on iOS with Python 2.7 on iPhone 5s

# coding: utf-8
import random

#guess number game

#computer generates random number
def generateNumber():
	computerGuess = int(random.randrange(0,101))
	return computerGuess

#get user
def getUser():
	userGuess = int(input('Guess a number'))
	return userGuess
#call for computer and user

#loop to check guess and report
while userGuess != computerGuess:
	if userGuess < computerGuess:
		print('Too low')
	elif userGuess > computerGuess:
		print('Too high')
	elif userGuess > computerGuess:

#Add counter of guess later

Sent from my iPhone

More information about the Tutor mailing list