簡體   English   中英

python 最后一個數字重復不止一次

[英]python last number repeat more than once

我的問題是我沒有得到我想要的輸出。 列表編號和列表大小都可以更改。

任務:完成該方法,以便它搜索作為參數傳遞的列表,以查看列表中的最后一個值是否出現多次。 如果最后一個值出現多次,則返回 True(不打印“True”)。 否則,返回 False(不打印“False”)。 如果列表為空,則返回 False。 從主方法調用您的方法,向其發送一個列表,並打印結果。

def last_repeats(list):
  last_number = list[-1]
  lenght = len(list)
  for x in range (0,lenght-1):
    if list[x] == last_number:
      return True
    else:
      return False
def main():
  list = [0,0,5,5]
  print(last_repeats(list))


############################################
### Don't edit anything below this line. ###
############################################

if __name__ == '__main__':
  main()

我需要的輸出:

True

我得到的輸出:

False

您在檢查第一個后返回,即使它可能是假的。 考慮您的數組 [0, 0, 5, 5]。 第一個元素 0 != 5,所以它立即返回 False。

要解決此問題,請在函數結束后返回 False

def last_repeats(lis): # 'list' is a keyword in python
  if len(lis) == 0: return False # Task requirement
  last_number = lis[-1]
  length = len(list) # typo?
  for x in range(length): # range(0, n) == range(n)
    if lis[x] == last_number:
      return True
  return False # So now you have checked every element in the list
def main():
  lis = [0, 0, 5, 5]
  print(last_repeats(lis))


############################################
### Don't edit anything below this line. ###
############################################

if __name__ == '__main__':
  main()

另外我剛剛讀到,如果列表為空,它應該返回 False。 目前,代碼給出了“IndexError”。 嘗試自己修復它!

玩得開心!

range(start, stop, \\[step\\])的值range(start, stop, \\[step\\])由公式r[i] = start + step*i ,其中i >= 0r[i] < stop 所以for x in range(0, lenght - 1)將一直到倒數第二個項目。 它應該是range(0, lenght)

def last_repeats(list):
  last_number = list[-1]
  lenght = len(list)
  vreturn = False
  for x in range (0,lenght):
    if list[x] == last_number:
      vreturn = True
  return vreturn

您得到 False 輸出,因為您的 if 語句在不等於 last_number 值的數字(即列表中的第一個元素)第一次出現時返回 False,這是因為此處不需要“else”塊。

您應該將 if 語句更改為僅在循環內返回 True。 在循環外返回 False:

for x in range (lenght):
    if list[x] == last_number:
      return True
    return False
def last_repeats(lis): # 'list' is a keyword in python
  last_number = lis[-1]
  length = len(list) # typo?
  for x in range(length): # range(0, n) == range(n)
    if lis[x] == last_number:
      return True
  return False # So now you have checked every element in the list
def main():
  lis = [0, 0, 5, 5]
  print(last_repeats(lis))


############################################
### Don't edit anything below this line. ###
############################################

if __name__ == '__main__':
  main()

您可以使用:

def last_repeats(my_list):
    return my_list and my_list[-1] in my_list[:-1]

def main():
    my_list = [0, 0, 5, 5]
    print(last_repeats(my_list))

############################################
### Don't edit anything below this line. ###
############################################

if __name__ == '__main__':
    main()

輸出:

True

您需要將 return false 語句放在 for 循環之外。

def last_repeats(list):
  last_number = list[-1]
  lenght = len(list)
  for x in range (0,lenght-1):
    if list[x] == last_number:
      return True
  return False
def main():
  list = [0,0,5,5]
  print(last_repeats(list))


############################################
### Don't edit anything below this line. ###
############################################

if __name__ == '__main__':
  main()

你也不需要 else 情況。 此編輯應達到您嘗試的目的。 目前,只要查詢不匹配的元素,您的函數就會返回 false。 只有在檢查完倒數第二個元素后才應返回 false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM