題目詳情:
利用 3 層for迴圈的列表生成式,找出對稱的 3 位數。例如,121 就是對稱數,因為從右到左倒過來還是 121。
題目拓展
如果隨便給定乙個數字,怎樣去判斷這個數字是對稱數?
解題思路
3位對稱數字的查詢:
l = [x*100 + y*10 + z for x in
range(1, 10) for y in
range(0, 10)for z in
range(0, 10) if z == x]
print(l)
執行結果
*****==== restart:c
:/users/lenovo/onedrive/python/多重for迴圈求三位對稱數0.py *****====
>>>
[101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, 303, 313, 323, 333, 343, 353, 363, 373, 383, 393, 404, 414, 424, 434, 444, 454, 464, 474, 484, 494, 505, 515, 525, 535, 545, 555, 565, 575, 585, 595, 606, 616, 626, 636, 646, 656, 666, 676, 686, 696, 707, 717, 727, 737, 747, 757, 767, 777, 787, 797, 808, 818, 828, 838, 848, 858, 868, 878, 888, 898, 909, 919, 929, 939, 949, 959, 969, 979, 989, 999]
>>>
上面是使用多層迴圈來找出對稱數字,
下面使用的是普通的方法找出對稱數字:
l = range(100, 1000)
newl = #找乙個中間列表存放新的數字
for n in l:
x = int( n/100 )#這裡使用 int() 函式是將結果轉換為整型,下同
y = int( n%10 )
ifx==y :
#十位數不用去考慮,只考慮百位與各位相等就可以了
print(newl)
執行結果:
*****==== restart:c
:/users/lenovo/onedrive/python/多重for迴圈求三位對稱數.py *****====
[101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, 303, 313, 323, 333, 343, 353, 363, 373, 383, 393, 404, 414, 424, 434, 444, 454, 464, 474, 484, 494, 505, 515, 525, 535, 545, 555, 565, 575, 585, 595, 606, 616, 626, 636, 646, 656, 666, 676, 686, 696, 707, 717, 727, 737, 747, 757, 767, 777, 787, 797, 808, 818, 828, 838, 848, 858, 868, 878, 888, 898, 909, 919, 929, 939, 949, 959, 969, 979, 989, 999]
>>>
其實兩個結果是一樣的,當然是一樣的啊!
隨便給定n位數字的查詢
判斷n位數是否為對稱數的關鍵是要分離出每一位上的數字,在與之相對稱的位置進行比較,在沒有傳遞這個數之前,程式是無法判斷它是幾位數的。
def
fun( x ):
y = x
l =
while y:#將每一位數分離開,存在列表 l 裡,並且是從低位到高位排序
y = int( y / 10)
i = len( l )-1
for n in l:#新生成乙個數,把原來的低位便高位,高位變低位
y = y+ n*pow(10,i)
i = i - 1
if x==y:#判斷兩數是否相等
return print('此數為對稱數!')
else:
return print('此數非對稱數!')
執行呼叫函式的結果:
********** restart: c:\users
\lenovo
\onedrive
\python
\隨機給的數字是否為對稱數.py **********
>>> fun(123456654321)
此數為對稱數!
>>> fun(1234566543211)
此數非對稱數!
>>>
下午想了比較久,在分離出數字得到 l 後,如何去把 l 的第乙個元素與最後乙個元素比較,第二個和倒數第二個,一直卡在這一關,突然發現可以使用 l 新生成乙個數 y ,在對兩者進行比較,這樣會簡單許多。 32位機,CPU是如何利用段暫存器定址的
32位cpu 位址線擴充套件成了32位,這和資料線的寬度是一致的。因此,在32位機裡其實並不需要採用 實體地址 段 偏移 這種位址表達方式。原來在16位機裡規定的每乙個段不大於64kb在32位機裡也不是必要的。所以,對於32位機來講,最簡單的方法就是用乙個32位數來標識乙個位元組的儲存位址,定址時只...
試找出滿足下列條件的所有三位數 (用一重迴圈實現)
其百位數不大於2 將個位與百位對換,得到的三位數是原三位數的兩倍多 執行 include int main return0 執行結果 注意點 題目要求我們要用一重迴圈來寫,所以我們要給自己限定在一重迴圈中。本題要求的是三位數,所以從一開始我們就可以給開始迴圈前的初始值賦予100。並且本題也要求其百位...
CIO們如何利用3D列印技術的優勢發展業務?
如今,3d列印技術得到了蓬勃發展。首席資訊官們 cio 應該以此為契機,重新整合it部門,將其作為業務創新的合作夥伴。cio們可能對3d列印的印象是這樣的 採用塑料 樹脂或金屬作為新增劑製造構造層製成的3d物件,可以通過3d列印設計或開發產品工具和技術,因此,似乎這些技術屬於高階it經理的許可權之外...