我有一個任務:在輸入 [x;y] 上有一個范圍,然后我應該檢查該范圍內的每個數字并檢查數字中的每個數字。如果它很奇怪,我應該打印它,例如:3, 20 我應該打印 4,6,8,20def check(num):if int(num) % 2 == 0: return Truex, y = int(input()), int(input())numbers = []if x <= y:while x != y: for i in str(x): if check(i): numbers.append(x) x += 1else:while y != x: for i in str(y): i = int(i) if check(i): numbers.append(y) y += 1if y == x: for i in str(x): if check(i): numbers.append(x)print(numbers)它打印 [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 20, 21, 22, 22, 23, 24, 24, 25, 26, 26, 27, 28, 28, 29 ] 而不是 2,4,6,8,20,22,24,26,28
1 回答

開滿天機
TA貢獻1786條經驗 獲得超13個贊
您正在根據每個數字的單個數字進行檢查和批準。在附加整個數字之前,您應該檢查所有這些。這就是您獲得22兩次的原因:第一次獲得2一次,第二次獲得一次。你得到10,因為即使1是奇數,0也是偶數,所以你將它附加到你的列表中。
將整個數字的檢查移到函數中,并且僅當所有數字都是偶數時才check返回。這會縮短您的代碼。另請注意,如果用戶以錯誤的順序輸入它們,您可以輕松交換。True xy
一旦發現一個數字是奇數,該函數check就會立即返回,您可以看到它只有在循環結束并且所有數字都是偶數時才能返回。FalseiTrue
def check(num):
for i in str(num):
if int(i) % 2 != 0:
return False
return True
x, y = int(input()), int(input())
if x > y:
x,y = y,x
numbers = []
while x <= y:
if check(x):
numbers.append(x)
x += 1
print (numbers)
結果,3并20輸入(但20也3可以):
[4, 6, 8, 20]
添加回答
舉報
0/150
提交
取消