鱼C论坛

 找回密码
 立即注册
查看: 771|回复: 8

[已解决]想求助一下这个问题

[复制链接]
发表于 2020-4-21 22:10:09 | 显示全部楼层 |阅读模式

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

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

x
毕设老师完全放养 只说让学一下python 刚看两天基础知识。。。老师让一边找程序一边学 有大佬简单讲一下这段的功能嘛看  为什么运行会 Process finished with exit code 0 呢 5555


class Solution:
    def robotSim(self, commands, ob):
        """
        :type commands: List[int]
        :type obstacles: List[List[int]]
        :rtype: int
        """
        origin = [0, 0]
        drection = 40
        result = 0
        dx = [0, 1, 0, -1]
        dy = [1, 0, -1, 0]
        for i in commands:
            if i == -1:
                drection = (drection + 1) % 4
            elif i == -2:
                drection = (drection - 1) % 4
            else:
                d = drection % 4
                for j in range(i):
                    if [origin[0] + dx[d], origin[1] + dy[d]] in ob:
                        break
                    origin = [origin[0] + dx[d], origin[1] + dy[d]]

            result = max(pow(origin[0], 2) + pow(origin[1], 2), result)

        return result
最佳答案
2020-4-22 01:31:33
我猜你没有正确应用这个程序,不知道你在哪个ide下运行, Process finished with exit code 0就是告诉你进程执行完毕返回代码0,这个就是说没有错误运行完进程,说明至少没表面上的、语法上的错误。
这是个类,运行后不会有任何反应,需要实例化才能调用:
>>> %Run test.py
>>> a=Solution()
>>> a.robotSim([1,-2,3,-1,2],[[2,3],[4,5],[6.7]])
9
这个程序是个机器人避障模拟程序,参数1是一组整数列表,是机器人移动指令,参数2是一组由若干两位整数的列表组成的列表,代表障碍坐标,返回值是一个整数。我吧我能看懂的部份做了注释,有点强迫症,把一个错误单词direction给改了一下:
class Solution:
    def robotSim(self, commands, ob):
        """
        :type commands: List[int]
        :type obstacles: List[List[int]]
        :rtype: int
        """
        origin = [0, 0]      #原始位置
        direction = 40       #圆形方向值,其实和0一样
        result = 0           #返回结果
        dx = [0, 1, 0, -1]   #x轴移动方向
        dy = [1, 0, -1, 0]   #y轴移动方向
        for i in commands:
            if i == -1:
                direction = (direction + 1) % 4    #-1表明调整方向为顺时针90°
            elif i == -2:
                direction = (direction - 1) % 4    #-2表明调整方向为逆时针90°
            else:
                d = direction % 4                 #除4求模得到0,1,2,3代表走位
                for j in range(i):                #非-1-2表示步数
                    if [origin[0] + dx[d], origin[1] + dy[d]] in ob:    #如果移动后的坐标在障碍表里,表明碰到障碍,退出本次循环,本步作废
                        break
                    origin = [origin[0] + dx[d], origin[1] + dy[d]]     #进行一次移动,修改坐标

            result = max(pow(origin[0], 2) + pow(origin[1], 2), result)    #坐标的平方和?看不懂!和上一轮result值比较取较大值

        return result     
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-21 22:25:54 | 显示全部楼层
没有print,光是return是不能输出到屏幕的,只会返回给函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 01:31:33 | 显示全部楼层    本楼为最佳答案   
我猜你没有正确应用这个程序,不知道你在哪个ide下运行, Process finished with exit code 0就是告诉你进程执行完毕返回代码0,这个就是说没有错误运行完进程,说明至少没表面上的、语法上的错误。
这是个类,运行后不会有任何反应,需要实例化才能调用:
>>> %Run test.py
>>> a=Solution()
>>> a.robotSim([1,-2,3,-1,2],[[2,3],[4,5],[6.7]])
9
这个程序是个机器人避障模拟程序,参数1是一组整数列表,是机器人移动指令,参数2是一组由若干两位整数的列表组成的列表,代表障碍坐标,返回值是一个整数。我吧我能看懂的部份做了注释,有点强迫症,把一个错误单词direction给改了一下:
class Solution:
    def robotSim(self, commands, ob):
        """
        :type commands: List[int]
        :type obstacles: List[List[int]]
        :rtype: int
        """
        origin = [0, 0]      #原始位置
        direction = 40       #圆形方向值,其实和0一样
        result = 0           #返回结果
        dx = [0, 1, 0, -1]   #x轴移动方向
        dy = [1, 0, -1, 0]   #y轴移动方向
        for i in commands:
            if i == -1:
                direction = (direction + 1) % 4    #-1表明调整方向为顺时针90°
            elif i == -2:
                direction = (direction - 1) % 4    #-2表明调整方向为逆时针90°
            else:
                d = direction % 4                 #除4求模得到0,1,2,3代表走位
                for j in range(i):                #非-1-2表示步数
                    if [origin[0] + dx[d], origin[1] + dy[d]] in ob:    #如果移动后的坐标在障碍表里,表明碰到障碍,退出本次循环,本步作废
                        break
                    origin = [origin[0] + dx[d], origin[1] + dy[d]]     #进行一次移动,修改坐标

            result = max(pow(origin[0], 2) + pow(origin[1], 2), result)    #坐标的平方和?看不懂!和上一轮result值比较取较大值

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

使用道具 举报

发表于 2020-4-22 09:46:33 | 显示全部楼层
Process finished with exit code 0
- 意味着你的代码正常运行并结束
- 你定义了一个类,然后没有实例化也没有调用其中的方法。
- 3楼的大哥很厉害

- 我不知道你是本科还是研究生,但是很多导师都一样,就跟学生说,你去网上找点代码!很简单的!
- 自己不能乱了,这都是他们不想管,放羊!
- 自己把握好自己的论文,导师的指导都很少的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-22 18:58:17 | 显示全部楼层
老八秘制 发表于 2020-4-21 22:25
没有print,光是return是不能输出到屏幕的,只会返回给函数

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

使用道具 举报

 楼主| 发表于 2020-4-22 18:58:58 | 显示全部楼层
txxcat 发表于 2020-4-22 01:31
我猜你没有正确应用这个程序,不知道你在哪个ide下运行, Process finished with exit code 0就是告诉你进 ...

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

使用道具 举报

 楼主| 发表于 2020-4-22 18:59:33 | 显示全部楼层
会计的会怎么念 发表于 2020-4-22 09:46
Process finished with exit code 0
- 意味着你的代码正常运行并结束
- 你定义了一个类,然后没有实例化 ...

谢谢 本科生 老师完全不管
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-22 19:19:15 | 显示全部楼层
txxcat 发表于 2020-4-22 01:31
我猜你没有正确应用这个程序,不知道你在哪个ide下运行, Process finished with exit code 0就是告诉你进 ...

您好 那 上面这三行程序 该怎么用啊 还没看到这里 就想先运行一下看看什么样 用的pycharm
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 21:24:45 | 显示全部楼层
veater 发表于 2020-4-22 19:19
您好 那 上面这三行程序 该怎么用啊 还没看到这里 就想先运行一下看看什么样 用的pycharm

1.首先运行程序,这时候就有产生了类Solution;
2.然后a=Solution()对类实例化产生对象a;
3.最后就是用a.robotSim()调用类里的方来进行避障模拟。
参数是两个列表,第一个列表是整数列表,-1、-2是表明调整方向,其他整数是移动步数;第二个列表由若干两单位的列表组成的列表,每个单位表示的是障碍物的坐标,具体运行方式看代码注释。但是我看不懂结果,坐标x和y的平方和的最大值,我唯一能想到的是这个坐标是离原始坐标最远的一个坐标了。
你需要恶补一下类和对象了,不然这些理解起来太费劲了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 19:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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