iT邦幫忙

1

#新手python 學習函式遇到問題

在做題目的時候遇到瓶頸,不好意思能請幫我解答一下嗎?
這是題目
[試設計一個python函式pt,它有兩個參數a,b, 兩個參數皆為3個位數的整數,函式pt能列印出a到b之間(包含a與b),構成數值的三個位數均為偶數的整數所構成的串列(list)。]
我一直解不出來,只能寫到印出100~400的雙數,但弄不出三個數字都是都是2的倍數的
只能寫到這
def pt(a,b):
ans=[for i in range(a,b+1) if i%2==0]
print(ans)
pt(100,200)

2 個回答

4
fillano
iT邦超人 1 級 ‧ 2021-05-28 23:26:40
最佳解答
def pt(a,b):
    ans=[i for i in range(a,b+1) if i%2==0]
    print(ans)
pt(100,200)

你只差一點

看更多先前的回應...收起先前的回應...
fillano iT邦超人 1 級 ‧ 2021-05-28 23:36:26 檢舉

阿?我誤會題意了XD

這樣看看,雖然不太美觀:

def pt(a,b):
    ans=[i for i in range(a,b+1) if int(str(i)[0])%2==0 and int(str(i)[1])%2==0 and int(str(i)[2])%2==0]
    print(ans)
pt(100,400)

費大好久不見,一切平安
/images/emoticon/emoticon33.gif

23114 iT邦新手 5 級 ‧ 2021-05-29 15:55:57 檢舉

謝謝,感激不盡!已經去試過了/images/emoticon/emoticon07.gif

fillano iT邦超人 1 級 ‧ 2021-05-31 20:24:12 檢舉
def pt(a,b):
    ans=[i for i in range(a,b+1) if all(int(j)%2==0 for j in str(i))]
    print(ans)
pt(100,400)

果然用all()比較優雅。

1
froce
iT邦大師 1 級 ‧ 2021-05-29 08:36:10
def allDigiEven(number):
    return all(int(i)%2==0 for i in str(number))
    
def pt(a,b):
    ans=[i for i in range(a,b+1) if allDigiEven(i)]
    print(ans)

pt(100,400)

https://ideone.com/46JqVr

使用 all() 這樣很方便.之前心原一馬有寫了範例
https://ithelp.ithome.com.tw/articles/10230859

23114 iT邦新手 5 級 ‧ 2021-05-29 15:56:37 檢舉

阿~了解~太感謝了!馬上去看!/images/emoticon/emoticon02.gif

我要發表回答

立即登入回答