名称错误未定义全局名称"x"…help

选择 | 换行 | 行号
  1. import subprocess
  2. import sys
  3. import time
  4. import os
  5.  
  6. def main():
  7.     #Check to see if quickdraw is located in the correct palce
  8.     quickfile = file_existance()
  9.     quickdraw = subprocess.Popen(['java', '-jar', quickfile], stdin = subprocess.PIPE)
  10.     #Intro, explaining what will occur throughout program
  11.     intro()
  12.     #
  13.     x_coordinate(1)
  14.     y_coordinate(1)
  15.     initial_ball(quickdraw)
  16.  
  17.  
  18. def file_existance():
  19.         filename = raw_input("Please enter the name of the file: ")
  20.         while (not os.path.isfile(filename)):
  21.                 print "That file does not exist, try again"
  22.                 filename = raw_input("Please enter the name of the file: ")
  23.         print os.path.abspath(filename)
  24.         return filename
  25.  
  26. def intro():
  27.     print "For this assignment you will be asked to give coordinates for a ball,"
  28.     print "after you have given the coordinates, the ball will continually bounce"
  29.     print "until it runs out of energy and comes to a complete stop."
  30.  
  31. def x_coordinate(num):
  32.     num= num+1
  33.     x= int(input("Please enter the x-coordinate (between 0 and 600) where you would like the ball placed: "))
  34.     if (x <= 600) and (x >= 0):
  35.         print "Valid choice"
  36.         return x
  37.     else:
  38.         print "invalid choice, choose again please"
  39.         if num > 3:
  40.             x = 300
  41.             return x
  42.         else:
  43.             x_coordinate(num)
  44.     return x
  45.  
  46. def y_coordinate(num):
  47.     num= num+1
  48.     y= int(input("Please enter the y-coordinate (between 0 and 600) where you would like the ball placed: "))
  49.     if (y >= 0) and (y <= 600):
  50.         print "Valid choice"
  51.         return y
  52.     else:
  53.         print "invalid choice, choose again please"
  54.         if num > 3:
  55.             y = 300
  56.             return y
  57.         else:
  58.             y_coordinate(num)    
  59.  
  60.  
  61.  
  62. def initial_ball(quickdraw):
  63.     radius= 300
  64.     ball = "fillcircle" + ' ' + str(x) + ' ' + str(y) + ' ' + str(radius)
  65.     quickdraw.stdin.write(ball)
  66.     quickdraw.stdin.write("\n") 
  67.  

错误是未定义全局名称"x"。但我不明白为什么,因为我返回了变量。。。

# 回答1

你应该分配x坐标(1)并将其作为附加参数传递给initial_ball()。你也必须这样做y_坐标(1).您也可以这样做:

选择 | 换行 | 行号
  1.     initial_ball(quickdraw,
  2.                  x_coordinate(1),
  3.                  y_coordinate(1))

重新定义initial_ball:def initial_ball(快速绘制,x,y):

标签: python

添加新评论