鱼C论坛

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

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

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

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

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

x
import math
def getp1():
    x1,y1=(input("请输入p1坐标"))
    return x1,y1
def getp2():
    x2,y2=(input("请输入p2坐标"))
    return y2,x2
def slope(x1,x2,y1,y2):
    p1=(x1,y1)
    p2=(x2,y2)
    print (p1[2]-p2[2])*1.0/(p1[1]-p2[1])
def intercept(x1,x2,y1,y2):
    p1=(x1,y1)
    p2=(x2,y2)
    print p1[2]-slope(p1,p2)*p1[1]
def main():
    getp1()
    getp2()
    slope(x1,x2,y1,y2)
    intercept(x1,x2,y1,y2)
main()
>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-22 23:28:23 | 显示全部楼层
打印的部分我给你改成了Python3的,你自己再改回去,如果是python2
输入按空格区分x1,y1,x2,y2
还有你的索引都不对,逻辑你自己再看看吧
import math
def getp1():
    x1,y1=(input("请输入p1坐标")).split()
    return int(x1),int(y1)
def getp2():
    x2,y2=(input("请输入p2坐标")).split()
    return int(x2),int(y2)
def slope(x1,x2,y1,y2):
    p1=(x1,y1)
    p2=(x2,y2)
    return (p1[1]-p2[1])*1.0/(p1[0]-p2[0])
def intercept(x1,x2,y1,y2):
    p1=(x1,y1)
    p2=(x2,y2)
    print(p1[1]-slope(*p1,*p2)*p1[0])
def main():
    x1,y1=getp1()
    x2,y2=getp2()
    slope(x1,x2,y1,y2)
    intercept(x1,x2,y1,y2)
main()
想知道小甲鱼最近在做啥?请访问 -> 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
这是为啥
想知道小甲鱼最近在做啥?请访问 -> 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'
>>>
想知道小甲鱼最近在做啥?请访问 -> 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 ...


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

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

def intercept(x1,y1,x2,y2):
    p1=(x1,y1)
    p2=(x2,y2)
    print(p1[1]-slope(*p1,*p2)*p1[0])
    
def main():
    x1,y1=getp1()
    x2,y2=getp2()
    slope(x1,y1,x2,y2)
    intercept(x1,y1,x2,y2)
main()
想知道小甲鱼最近在做啥?请访问 -> 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 ...

图片你用曲别针发出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 11:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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