鱼C论坛

 找回密码
 立即注册
查看: 2972|回复: 7

(菜鸡)函数返回的问题“NameError: global name 'x1' is not defined”

[复制链接]
发表于 2018-10-22 23:17:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import math
  2. def getp1():
  3.     x1,y1=(input("请输入p1坐标"))
  4.     return x1,y1
  5. def getp2():
  6.     x2,y2=(input("请输入p2坐标"))
  7.     return y2,x2
  8. def slope(x1,x2,y1,y2):
  9.     p1=(x1,y1)
  10.     p2=(x2,y2)
  11.     print (p1[2]-p2[2])*1.0/(p1[1]-p2[1])
  12. def intercept(x1,x2,y1,y2):
  13.     p1=(x1,y1)
  14.     p2=(x2,y2)
  15.     print p1[2]-slope(p1,p2)*p1[1]
  16. def main():
  17.     getp1()
  18.     getp2()
  19.     slope(x1,x2,y1,y2)
  20.     intercept(x1,x2,y1,y2)
  21. main()
复制代码
>
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-10-22 23:28:23 | 显示全部楼层
打印的部分我给你改成了Python3的,你自己再改回去,如果是python2
输入按空格区分x1,y1,x2,y2
还有你的索引都不对,逻辑你自己再看看吧

  1. import math
  2. def getp1():
  3.     x1,y1=(input("请输入p1坐标")).split()
  4.     return int(x1),int(y1)
  5. def getp2():
  6.     x2,y2=(input("请输入p2坐标")).split()
  7.     return int(x2),int(y2)
  8. def slope(x1,x2,y1,y2):
  9.     p1=(x1,y1)
  10.     p2=(x2,y2)
  11.     return (p1[1]-p2[1])*1.0/(p1[0]-p2[0])
  12. def intercept(x1,x2,y1,y2):
  13.     p1=(x1,y1)
  14.     p2=(x2,y2)
  15.     print(p1[1]-slope(*p1,*p2)*p1[0])
  16. def main():
  17.     x1,y1=getp1()
  18.     x2,y2=getp2()
  19.     slope(x1,x2,y1,y2)
  20.     intercept(x1,x2,y1,y2)
  21. main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-22 23:45:24 | 显示全部楼层
塔利班 发表于 2018-10-22 23:28
打印的部分我给你改成了Python3的,你自己再改回去,如果是python2
输入按空格区分x1,y1,x2,y2
还有你的 ...

C:\Users\Administrator\Desktop\TIM截图20181022234409
这是为啥
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-22 23:46:15 | 显示全部楼层

图片咋没有= =
File "C:\Users\Administrator\Desktop\手动阀手动阀8", line 3, in getp1
    x1,y1=(input("请输入p1坐标")).split()
AttributeError: 'tuple' object has no attribute 'split'
>>>
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-22 23:55:25 | 显示全部楼层
本帖最后由 claws0n 于 2018-10-23 00:00 编辑
闵行理工的屠夫 发表于 2018-10-22 23:46
图片咋没有= =
File "C:%users\Administrator\Desktop\手动阀手动阀8", line 3, in getp1
    x1,y1=(i ...


修改楼上的,有小运算错误。版本比较旧?可以换成这个
  1. import math
  2. def getp1():
  3.     x1,y1= map(float,input("请输入p1坐标").split())
  4.     return x1, y1
  5. def getp2():
  6.     x2,y2= map(float,input("请输入p2坐标").split())
  7.     return x2, y2

  8. def slope(x1,y1,x2,y2):
  9.     p1=(x1,y1)
  10.     p2=(x2,y2)
  11.     return (p1[1]-p2[1])/(p1[0]-p2[0])

  12. def intercept(x1,y1,x2,y2):
  13.     p1=(x1,y1)
  14.     p2=(x2,y2)
  15.     print(p1[1]-slope(*p1,*p2)*p1[0])
  16.    
  17. def main():
  18.     x1,y1=getp1()
  19.     x2,y2=getp2()
  20.     slope(x1,y1,x2,y2)
  21.     intercept(x1,y1,x2,y2)
  22. main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-23 07:17:54 | 显示全部楼层
闵行理工的屠夫 发表于 2018-10-22 23:46
图片咋没有= =
File "C:%users\Administrator\Desktop\手动阀手动阀8", line 3, in getp1
    x1,y1=(i ...

图片你用曲别针发出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-23 07:54:47 | 显示全部楼层
claws0n 发表于 2018-10-22 23:55
修改楼上的,有小运算错误。版本比较旧?可以换成这个

谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-23 07:55:19 | 显示全部楼层
塔利班 发表于 2018-10-22 23:28
打印的部分我给你改成了Python3的,你自己再改回去,如果是python2
输入按空格区分x1,y1,x2,y2
还有你的 ...

谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-12 18:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表