4 python default return arraylist range
如果列表超出范围,我该如何返回特定值?这是我到目前为止的代码:
def word(num):
return ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][num-1]
Run Code Online (Sandbox Code Playgroud)
word(1)将返回'Sunday',但如果num不是一个整数,我怎么能返回一个默认值1-7?
因此,word(10)会返回类似的东西"Error".
正常if/else应该足够了.
def word(num):
l = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']
return l[num-1] if 0<num<=len(l) else "Error"
Run Code Online (Sandbox Code Playgroud)
#driver代码
>>> word(7)
=> 'Saturday'
>>> word(8)
=> 'Error'
>>> word(-10)
=> 'Error'
Run Code Online (Sandbox Code Playgroud)
使用高度pythonic EAFP方法与try-except.
daysofweek = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']
def getday(num):
try:
return daysofweek[num - 1]
except IndexError:
return "Error"
Run Code Online (Sandbox Code Playgroud)
您可以将列表转换为dict enumerate(sequence, start=1):
dict(enumerate(['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'], 1))
# {1: 'Sunday', 2: 'Monday', 3: 'Tuesday', 4: 'Wednesday', 5: 'Thursday', 6: 'Friday', 7: 'Saturday'}
Run Code Online (Sandbox Code Playgroud)
然后,您的查询很简单dict.get():
wdays = {1: 'Sunday', 2: 'Monday', 3: 'Tuesday', 4: 'Wednesday', 5: 'Thursday', 6: 'Friday', 7: 'Saturday'}
def word(num):
return wdays.get(num, 'Error')
Run Code Online (Sandbox Code Playgroud)
这是一个例子:
>>> word(3)
'Tuesday'
>>> word(10)
'Error'
>>> word('garbage')
'Error'
Run Code Online (Sandbox Code Playgroud)
根据你想要对字符串做什么,返回'Error'而不是简单地抛出一个错误可能不是一个好主意.否则,您将必须检查字符串是否像一周工作日或等于'Error'每次使用此功能.
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |