[英]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 >= 0
和r[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.