Return 列表超出范围时的特定值 Python
Return specific value when list is out of range in Python
如果列表超出范围,我如何 return 特定值?这是我目前的代码:
def word(num):
return ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][num-1]
word(1)
将 return 'Sunday'
,但是如果 num 不是 1-7
之间的整数,我怎么能 return 默认值?
因此,word(10)
会 return 类似于 "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"
#驱动代码
>>> word(7)
=> 'Saturday'
>>> word(8)
=> 'Error'
>>> word(-10)
=> 'Error'
使用具有 try-except
.
的高度 pythonic EAFP 方法
daysofweek = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']
def getday(num):
try:
return daysofweek[num - 1]
except IndexError:
return "Error"
简单翻译你想要的Python:
def word(num):
return ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][num-1] if 1 <= num <= 7 else 'Error'
您可以使用 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'}
那么,您的查询就很简单了 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')
这是一个例子:
>>> word(3)
'Tuesday'
>>> word(10)
'Error'
>>> word('garbage')
'Error'
根据您想对字符串执行的操作,return 'Error'
而不是简单地抛出错误可能不是一个好主意。否则,您每次使用此函数时都必须检查字符串是否看起来像工作日或等于 'Error'
。
它应该处理任何不在您所需范围内的整数。
daysofweek = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']
def getday(num, len_range):
if 0 < num <= len_range:
return daysofweek[num - 1]
else:
return "Error"
num_index = int(input("Enter a value for num : "))
print(getday(num_index, len(daysofweek)))
你也可以像这样把getday()
写成紧凑的形式:
def getday(num, len_range):
return daysofweek[num - 1] if 0 < num <= len_range else "Error"
如果列表超出范围,我如何 return 特定值?这是我目前的代码:
def word(num):
return ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][num-1]
word(1)
将 return 'Sunday'
,但是如果 num 不是 1-7
之间的整数,我怎么能 return 默认值?
因此,word(10)
会 return 类似于 "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"
#驱动代码
>>> word(7)
=> 'Saturday'
>>> word(8)
=> 'Error'
>>> word(-10)
=> 'Error'
使用具有 try-except
.
daysofweek = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']
def getday(num):
try:
return daysofweek[num - 1]
except IndexError:
return "Error"
简单翻译你想要的Python:
def word(num):
return ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][num-1] if 1 <= num <= 7 else 'Error'
您可以使用 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'}
那么,您的查询就很简单了 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')
这是一个例子:
>>> word(3)
'Tuesday'
>>> word(10)
'Error'
>>> word('garbage')
'Error'
根据您想对字符串执行的操作,return 'Error'
而不是简单地抛出错误可能不是一个好主意。否则,您每次使用此函数时都必须检查字符串是否看起来像工作日或等于 'Error'
。
它应该处理任何不在您所需范围内的整数。
daysofweek = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']
def getday(num, len_range):
if 0 < num <= len_range:
return daysofweek[num - 1]
else:
return "Error"
num_index = int(input("Enter a value for num : "))
print(getday(num_index, len(daysofweek)))
你也可以像这样把getday()
写成紧凑的形式:
def getday(num, len_range):
return daysofweek[num - 1] if 0 < num <= len_range else "Error"