如何利用多層迴圈找出對稱的3位數數字?

2021-08-22 04:45:29 字數 2717 閱讀 5872

題目詳情:

利用 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經理的許可權之外...