吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 918|回复: 11
收起左侧

[求助] python代码求帮忙解读

[复制链接]
tencentma 发表于 2022-9-9 13:34
本帖最后由 tencentma 于 2022-9-9 13:35 编辑

下方是一个菜鸟教程上的python代码,我不太明白,希望大神能帮忙把每一句解读一下,谢谢啊。比如第二句Lfirst = input[0 : d] ,input还能这么用?单独打印Lfirst为啥提示错误。感谢。


Python3 实例给定一个字符串,从头部或尾部截取指定数量的字符串,然后将其翻转拼接。
实例



def rotate(input,d):

    Lfirst = input[0 : d]
    Lsecond = input[d :]
    Rfirst = input[0 : len(input)-d]
    Rsecond = input[len(input)-d : ]

    print( "头部切片翻转 : ", (Lsecond + Lfirst) )
    print( "尾部切片翻转 : ", (Rsecond + Rfirst) )

if __name__ == "__main__":
    input = 'Runoob'
    d=2  # 截取两个字符
    rotate(input,d)
执行以上代码输出结果为:

头部切片翻转 :  noobRu
尾部切片翻转 :  obRuno

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

楼主你好萌 发表于 2022-9-9 13:43
这里的input是一个变量
 楼主| tencentma 发表于 2022-9-9 13:52
楼主你好萌 发表于 2022-9-9 13:43
这里的input是一个变量

谢谢,一句话就说明白了,我懂了!想问下if __name__ == "__main__":这一句一般什么时候用啊,找了教材没看太懂。
luxingyu329 发表于 2022-9-9 13:56
[Python] 纯文本查看 复制代码
# 这是定义一个名字为 rotate的函数  需要传两个参数
def rotate(input, d):
    # 传进来的参数赋值给 Lfirst   
    # input[0 : d] 表示传进来的第一个参数从下标0开始切片,切到第2个参数也就是d的下标为止
    Lfirst = input[0: d]
    # 同上 也就是把上面切片剩下的所有字符赋值给Lsecond
    Lsecond = input[d:]
    # 传进来的第一个参数从下标0开始切片至 (参数总长度减出第二个参数)的长度的下标 赋值给Rfirst 
    Rfirst = input[0: len(input) - d]
    # 同上一行切片剩下的字符赋值给Rsecond
    Rsecond = input[len(input) - d:]
    # 输出,接受赋值的变量输出就是结果了
    print("头部切片翻转 : ", (Lsecond + Lfirst))
    print("尾部切片翻转 : ", (Rsecond + Rfirst))
    '''
    本例中传入的第一个参数是 input 第二个参数是在d, 也就是传入  'Runoob',2
    Lfirst 赋值结果为 Runoob 从0到2的下标 Ru 
    Lfirst 赋值结果为 Runoob 从2到最后的下标 noob
    Rfirst 赋值结果为 Runoob 从0到(6-2)=4的下标 Runo
    Rsecond赋值结果为 Runoob 从(6-2)=4的下标至最后 ob
    '''


if __name__ == "__main__":
    # 定义变量
    input = 'Runoob'
    # 定义变量
    d = 2  # 截取两个字符
    # 调用函数
    rotate(input, d)
# 执行以上代码输出结果为:
# 
# 头部切片翻转 :  noobRu
# 尾部切片翻转 :  obRuno

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
叫我小王叔叔 + 1 + 1 就喜欢这样的热心人。点赞
tencentma + 1 + 1 谢谢@Thanks!

查看全部评分

lxfx1 发表于 2022-9-9 13:56
这里的input并不是让你输入值,而是传入函数的一个参数,你也可以把所有的input改成a/b之类,对结果没有影响。另外打印Lfirst需要放入定义的函数rotate里,比如放在print( "尾部......这句后面,如果你想在主函数中输出Lfirst的值,可以在定义的rotate(input,d)里加一句return Lfirst,然后输出rotate(input,d)就行。
luxingyu329 发表于 2022-9-9 13:58
if __name__ == "__main__":
涉及是本代码执行还是另一个模块调用, 这句是起来判断的作用,如果是本程序执行,那么这句下面执行的代码执行,
如果 是别的代码调用本代码的函数 ,那么if __name__ == "__main__":  下面包含的代码不执行
amorous_pp 发表于 2022-9-9 14:00
if __name__ == "__main__":  是做判断脚本是通过import 导入还是直接执行的,只有直接执行脚本的时候才会执行里面的语句。 一般是用于测试当前脚本是否工作正常的内容放在里面。然后防止在import的时候执行这些代码。
Lfirst是函数内的变量,变量有作用域, 在函数外是无法访问的。想要访问需要在函数内进行访问,作用域分为LEGB,这块可以百度学习。
oarewyo 发表于 2022-9-9 14:01
tencentma 发表于 2022-9-9 13:52
谢谢,一句话就说明白了,我懂了!想问下if __name__ == "__main__":这一句一般什么时候用啊,找了教材没 ...

main相当于主函数,使代码更有逻辑
Liliright 发表于 2022-9-9 14:17
本帖最后由 Liliright 于 2022-9-9 14:18 编辑

我也想知道
YuanFang0w0 发表于 2022-9-9 14:17
tencentma 发表于 2022-9-9 13:52
谢谢,一句话就说明白了,我懂了!想问下if __name__ == "__main__":这一句一般什么时候用啊,找了教材没 ...

比如有两个文件,test1.py,test2.py。
要分模块开发,测试。
如果完成了test1的功能,要在当前的test1中测试一下功能是否正常,那么这个时候有两种途径
第一:可以在test1中写if __name__ == "__main__":,在他下面写你要测试调用的方法功能。
第二:直接在test中调用你要测试的功能。
测试没问题之后,你要在test2中引入这个test1的功能,也就是import test1
然后你test2开发完成,要进行测试。
因为你在test2中import了test1,所以在test2测试的时候,如果你的test1是第二种写法,就会在test2中调用你测试test1的功能,可能造成方法多次调用,进行不必要的操作。但是第一种就不会。

总的来说,他就是一个判断入口的方法,如果你是在本文件中进行运行测试,那么当你运行时他就会执行main下面的内容,在别的文件中import调用,main下的内容不被执行。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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