注册 登录
编程论坛 Python论坛

python3.13的逻辑混乱?还是我的逻辑没缕清楚?

小白到底白不 发布于 2025-03-23 06:56, 111 次点击
写了一个传参进程序的小程序。
程序代码:

import os
from ftplib import FTP
import sys

if len(sys.argv)>1:
    print("第一个参数:",sys.argv[1])
    if len(sys.argv)>2:
        print("第二个参数:",sys.argv[2])
    else:
    print("没有提供第二个参数!")
else:
    print("没有提供第一个参数!")

提示我:TabError: inconsistent use of tabs and spaces in indentation
原因是我复制了第一个else,于是,数空格,要保持一至!
修改后的运行结果还不错。

第一个参数: abc
没有提供第二个参数!

但是,再复制一次,就出问题了。
程序代码:

if len(sys.argv)>1:
    print("第一个参数:",sys.argv[1])
    if len(sys.argv)>2:
        print("第二个参数:",sys.argv[2])
    else:
        print("没有提供第二个参数!")
        if len(sys.argv)>3:
            print("第三个参数:",sys.argv[3])
        else:
            print("没有提供第三个参数!")
else:
    print("没有提供第一个参数!")

不输入参数,提示错误。输入一个参数,也有提示。输入两个,第三个的提示给跳过了?
程序代码:

H:\python\studyPython>python ftpConnTest.py
没有提供第一个参数!

H:\python\studyPython>python ftpConnTest.py abc
第一个参数: abc
没有提供第二个参数!
没有提供第三个参数!

H:\python\studyPython>python ftpConnTest.py abc bcd
第一个参数: abc
第二个参数: bcd


这是怎么回事?
3 回复
#2
小白到底白不2025-03-23 07:10
程序代码:

import os
from ftplib import FTP
import sys

if len(sys.argv)>=3:
    print("第一个参数:",sys.argv[1])
    print("第二个参数:",sys.argv[2])
    print("第三个参数:",sys.argv[3])
else:
    print("没有提供足够的参数!")


改成这样,也不行啊,不给参数或者给一个参数,程序运行都没问题,但给两个参数就出问题了?

程序代码:

H:\python\studyPython>python ftpConnTest.py
没有提供足够的参数!

H:\python\studyPython>python ftpConnTest.py abc
没有提供足够的参数!

H:\python\studyPython>python ftpConnTest.py abc bcd
第一个参数: abc
第二个参数: bcd
Traceback (most recent call last):
  File "H:\python\studyPython\ftpConnTest.py", line 8, in <module>
    print("第三个参数:",sys.argv[3])
                         ~~~~~~~~^^^
IndexError: list index out of range

H:\python\studyPython>
#3
forever742025-03-23 08:23
您脑海中的三个参数,实际上是第2、3、4个。
第一个是argv[0],ftpConnTest.py
也就是说上面>=4才行。
#4
小白到底白不2025-03-23 20:02
回复 3楼 forever74
收到,非常感谢
1