我无法缩短CodingBat中关于Python问题的if语句。 问题是这样的:给定一个int数组,如果该数组中的前4个元素之一为9,则返回True。该数组的长度可能小于4。 我写的原始代码运行良好,看起来像这样:
def array_front9(nums):
if len(nums) >= 4:
count = 4
else:
count = len(nums)
for n in range(count):
if nums[n] == 9:
return True
return False
我试图缩短第2行和第4行之间的if和else:
def array_front9(nums):
return count = 4 if len(nums) >= 4 else count = len(nums)
for n in range(count):
if nums[n] == 9:
return True
return False
但是,它在我更改后变成了无效的语法。我不确定我在哪里做错了。有什么方法可以缩短2号线和4号线之间的距离吗? 谢谢!
答案 0 :(得分:4)
关于您的代码:
return
语句的缩进为4,而for
语句的缩进仅为2。return
语句不能同时是赋值。if/else
构造不需要第二次分配。只需将数字放在else块中。作业已经在该行的开头因此您的代码成为
def array_front9(nums):
count = 4 if len(nums) >= 4 else len(nums)
for n in range(count):
if nums[n] == 9:
return True
return False
还有一个更短的解决方案:
def array_front9(nums):
return 9 in nums[0:4]
in
是用于检查是否在数组中找到元素的关键字。通过切片[0:4]
,您可以将其限制为数组的前4个元素。如果数组较短,这仍然有效。
答案 1 :(得分:1)
类似的事情应该是可能的:
def array_front9(nums):
count = 4 if len(nums) >= 4 else len(nums)
return any(nums[n] == 9 for n in range(count))
答案 2 :(得分:1)
您无法在Python中返回作业:
In [14]: def func():
...: return count = 4
File "<ipython-input-14-918fc0e49446>", line 2
return count = 4
^
SyntaxError: invalid syntax
Thomas也是正确的,因为您的return
语句后有代码,该代码被错误地缩进,并且即使返回Python也不会抱怨,因为它在返回后仍不会运行。
如果您想使用原始的三元想法:
In [20]: def array_front9(nums):
...: return 4 if len(nums) >= 4 else len(nums)
In [21]: array_front9([1,2,3])
Out[21]: 3
In [22]: array_front9([1,2,3,4])
Out[22]: 4
In [23]: array_front9([1,2,3,4,5])
Out[23]: 4
答案 3 :(得分:0)
签出:https://jaxenter.com/implement-switch-case-statement-python-138315.html 这称为switch语句,这可以使else块更简单。