Python:在可能存在或不存在的参数上使用 if 语句

标签 python if-statement argv

我一直在尝试制作一个小脚本(顺便说一下,我是 Python 的新手),它将返回给定单词的拼字游戏分数(argv[1],并提示我输入一个word if I don't give it one. 在摆弄 if 语句和后来的许多索引错误之后,我决定这样做:

try:
    do something with sys.argv[1]
except IndexError:
    print 'Type an argument'

但它并没有我想要的那么优雅。它基本上只是说“如果你遇到这种错误,打印这个:”对吧?我一直在尝试类似的东西:

if argv[1] >= 1:
    do something with sys.argv[1]
else:
    print 'Type an argument'

但我一直在 if 部分遇到索引错误,我认为这是因为如果 argv[1] 小于 1,则没有参数,这意味着 argv[1] 不存在。我在正确的页面上吗?我想说类似“如果没有给出参数,打印这个:”这可能吗?

这是我使用的实际代码

from sys import argv
from string import maketrans

i = 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z' 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'
o = '0' '2' '2' '1' '0' '3' '1' '3' '0' '7' '4' '0' '2' '0' '0' '2' '9' '0' '0' '0' '0' '3' '3' '7' '3' '9' '0' '2' '2' '1' '0' '3' '1' '3' '0' '7' '4' '0' '2' '0' '0' '2' '9' '0' '0' '0' '0' '3' '3' '7' '3' '9'
t = maketrans(i, o)

def main():
  try:
   print sum(int(x) for x in argv[1].translate(t)) + len(argv[1])
  except IndexError:
   print 'Type a word, you shmuck'

if __name__ == '__main__':
  main()

最佳答案

Python 的部分哲学是“请求宽恕比请求许可更好”——由于这是一个错误案例,因此对 tryexcept 没有任何危害.也就是说,如果你想避免它,你可以只检查参数的数量:

def main():
    if len(argv) < 2:
        print "We need at least one argument"
        return
    # Remainder of implementation goes here

关于Python:在可能存在或不存在的参数上使用 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17802492/

相关文章:

python - .bash_profile.pysave 究竟是什么?

python - 更改默认的 Python 编码风格

Python TinyDB 获取数据库中的最后一条记录

javascript - 简写 if 语句始终返回 'false' 而不是分配的值

c++ - 命令行参数

python - 从高速公路 WebSocketClientProtocol 回调到另一个对象

R错误if语句 'argument is of length zero'

JavaScript 不大于 0

c - 分配 argv[i] = NULL

c - 将 argv 存储到 int 数组