จากแบบฝึกหัดนี้
https://codingbat.com/prob/p193604
Given an array of ints, return True if the sequence of numbers 1, 2, 3 appears in the array somewhere.
array123([1, 1, 2, 3, 1]) → True
array123([1, 1, 2, 4, 1]) → False
array123([1, 1, 2, 1, 2, 3]) → True
เฉลยคือ
def array123(nums):
# Note: iterate with length-2, so can use i+1 and i+2 in the loop
for i in range(len(nums)-2):
if nums
==1 and nums[i+1]==2 and nums[i+2]==3:
return True
return False
เราสงสัยว่าทำไม range(len(nums)) ต้อง -2 คะ ปกติเคยเจอแค่ใส่ -1
อย่างอันนี้ [1, 1, 2, 1, 2, 3] ถ้า -1 rangeก็จะเริ่มตั้งแต่ตัวแรกแล้วจบที่ตัวสุดท้าย แต่พอเป็น-2 เลยเริ่มงงค่ะ
ปัญหา python จาก codingbat:array123
Given an array of ints, return True if the sequence of numbers 1, 2, 3 appears in the array somewhere.
array123([1, 1, 2, 3, 1]) → True
array123([1, 1, 2, 4, 1]) → False
array123([1, 1, 2, 1, 2, 3]) → True
เฉลยคือ
def array123(nums):
# Note: iterate with length-2, so can use i+1 and i+2 in the loop
for i in range(len(nums)-2):
if nums==1 and nums[i+1]==2 and nums[i+2]==3:
return True
return False
เราสงสัยว่าทำไม range(len(nums)) ต้อง -2 คะ ปกติเคยเจอแค่ใส่ -1
อย่างอันนี้ [1, 1, 2, 1, 2, 3] ถ้า -1 rangeก็จะเริ่มตั้งแต่ตัวแรกแล้วจบที่ตัวสุดท้าย แต่พอเป็น-2 เลยเริ่มงงค่ะ