def is_correct_sequence(seq):
"""
Check whether the given sequence does not contain
the same value (except for None) more than once,
and whether it only contains (1) integer values between 1
and the length of the given sequence and/or (2) the special value None.
"""
for i in range(len(seq)):
if seq[i] < 1 or seq[i] > len(seq):
return False
elif type(seq[i]) != type(None) or type(seq[i]) != int:
return False
else:
for i in range(len(seq)-1):
for j in range(i+1, len(seq)):
if seq[i] == seq[j] != None:
return False
else:
return True
##TESTS
assert not is_correct_sequence((4, "abc", None, -17, None, "xyz"))
assert not is_correct_sequence((1, 2, 1))
assert not is_correct_sequence((1.0, None, 1))
assert is_correct_sequence((None, None, 4, 1))
assert is_correct_sequence((None, 1, 2, 3))
我有最後2個斷言的問題。所以目標不是刪除雙打,而是要看看序列是否正確。如果其中兩個元素相同,則順序不正確(除無)(無可能多次出現)。我如何在我的代碼中清楚地說明這一點?Python:is_correct_sequence(沒有雙打)
在每種情況下,您都有一個'return'子句。你永遠不會做一次以上的迭代。 –