【问题标题】:how do i assign a default value if no argument is passed in + python如果在 + python 中没有传递参数,我如何分配默认值
【发布时间】:2017-04-23 01:08:32
【问题描述】:

我如何写letter = sys.argv[2] or 'a',这样如果a 中没有传递参数,就会分配给字母。 所以基本上我希望letter 的默认值是@987654325 @ 除非有东西传入。如果要传入东西,我希望将其分配给letter

这是我的简单程序:

$ cat loop_count.py
import sys

def count(word,letter):
        for char in word:
                if char == letter:
                        count = count + 1
        return count
                                # WHAT I WANT
word = sys.argv[1] or 'banana'  # if sys.argv[1] has a value assign it to word, else assign 'banana' to word
letter = sys.argv[2] or 'a'     # if sys.argv[2] has a value assign it to letter, else assign 'a' to letter

print 'Count the number of times the letter',letter,' appears in the word: ', word

count = 0
for letter in word:
        if letter == 'a':
                count = count + 1
print count

这是我通过传递两个参数peaa 来运行程序

$ python loop_count.py pea a
Count the number of times the letter a  appears in the word:  pea
1

我希望参数是可选的,所以我希望不必传递字母argumentmt。 那么我该如何写letter = sys.argv[2] or 'a',这样如果没有传入的参数,字母就会分配给a

这是我运行的程序只有一个参数,我希望参数是可选的。

$ python loop_count.py pea
Traceback (most recent call last):
  File "loop_count.py", line 10, in <module>
    letter = sys.argv[2] or 'a'
IndexError: list index out of range

【问题讨论】:

标签: python


【解决方案1】:

您可以使用以下内容:

letter = sys.argv[2] if len(sys.argv) >= 3 else 'a'

sys.argv[2]sys.argv中的第3个元素,这意味着sys.argv的长度至少应该是3。如果不是&gt;= 3,我们将'a'赋值给letter

【讨论】:

  • tks 就是这样,但是有没有像letter = sys.argv[2] ? len(sys.argv) : 'a' 这样的更短的写法,或者是java sccript?
  • 这相当于 Python 中的三元运算符,并且是更短的方式。
猜你喜欢
  • 2020-11-23
  • 1970-01-01
  • 2013-02-20
  • 2017-02-14
  • 2017-10-02
  • 2017-11-08
  • 2014-04-09
  • 2020-09-16
  • 1970-01-01
相关资源
最近更新 更多