日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

.net mvc actionresult 返回字符串_字符串游戏之无效的身份证

發布時間:2025/5/22 c/c++ 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net mvc actionresult 返回字符串_字符串游戏之无效的身份证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?出場人物介紹

小美:小學4年級學生,參加了學校的編程興趣小組,已經了解了Python語言的基本語法,能夠看懂一些簡單的程序。她做事風風火火,對所有的事情都很好奇,喜歡打破砂鍋問到底,是一個叫人又愛又恨的小丫頭。

阿福:一個酷愛編程的8年級男生。大家都說他長得像國寶大熊貓,動作緩慢,憨態可掬。他做事情確實夠慢的,連說話也慢條斯理,可是他一點也不擔心,他常常說:“慢就是快,只要堅持下去,蝸牛也能爬上金字塔。”

古老師:雖然年近不惑,但依然對生活充滿熱情。“愛生活愛運動”是他的人生信條,和孩子們一起編程是他最大的樂趣。他神出鬼沒,總是在孩子們最需要幫助的時候出現。當然,你也不能動不動就找古老師,因為他很忙,非常非常忙。所以,遇到問題還是自己先思考吧。

“Python算法之旅”微信群等著你

掃碼加入“Python算法之旅”微信群,和斌哥面對面交流,更多資料和更有趣的話題等你一起來分享。

?正文

字符串游戲之無效的身份證

小美:阿福,上次古老師留下的檢驗身份證號問題,你找到答案了嗎?

阿福:找到了。身份證最后一位是根據前面十七位數字碼,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。

計算方法:將前面的身份證號碼17位數分別乘以不同的系數。從第一位到第十七位的系數分別為:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。

將這17位數字和系數相乘的結果相加;用加出來的和除以11,看余數是多少,余數只可能有0、1、2、3、4、5、6、7、8、9、10這11個數字,其分別對應的身份證最后一位號碼為1、0、X、9、8、7、6、5、4、3、2。

例如,如果余數是0,身份證的第18位數字就是1;如果余數是2,身份證的最后一位號碼就是羅馬數字X。

小美:原來是這樣。那你上次在示例2中給出的身份證號“330281201010310641”,是先將前17位數字和系數相乘的結果相加,即3*7+3*9+0*10+2*5+8*8+1*4+2*2+0*1+1*6+0*3+1*7+0*9+3*10+1*5+0*8+6*4+4*2 = 210,再將210對11求余數,結果為1。所以,身份證號最后一位數字應該是0。

阿福:沒錯。既然你已經知道了檢驗的原理,那你能不能設計一個函數,根據輸入的18位身份證號碼,判斷該身份證是否為有效身份證呢?

小美:這有什么難的!看我的。

?問題1

函數功能:根據輸入的18位身份證號碼,判斷該身份證是否為有效身份證。

函數名:check_id_num(id_num: str) -> bool

參數表:id_num -- 存儲了18位身份證號碼的字符串。

返回值:如果是有效身份證號返回True,否則返回False。

示例1:輸入id_num='330281200605302813',返回True

示例2:輸入id_num='330281201010310641',返回False

?代碼1

def check_id_num(id_num): factor = (7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2) #校驗碼系數 remainder = '10X98765432' #余數表 s = 0 for i in range(len(factor)):????????s?+=?factor[i]?*?int(id_num[i]) r = s % 11 return remainder[s%11] == id_num[-1]古老師:小美進步很大啊!函數已經寫得有模有樣了。對了,阿福,你聽說過map()函數嗎?阿福:知道啊,map()函數是一個高階函數,它接收兩個參數,一個是函數,一個是迭代器(可迭代對象),map將傳入的函數依次作用到序列的每個元素,并把結果作為新的迭代器返回。

例如我們有一個函數f(x) = x * x,把該函數作用在一個列表[1, 2, 3, 4, 5, 6]上,就可以用map()實現如下:

?代碼2

def f(x): return x * xa = list(map(f, [1, 2, 3, 4, 5, 6]))這樣就可以得到列表a = [1, 4, 9, 16, 25, 36]。古老師:不錯,知識點記得挺牢啊!那你知道匿名函數嗎?能不能把上面的語句用匿名函數表示?阿福:可以,這樣只需要一條語句就夠了:

?代碼3

a = list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6]))

?知識小貼士

python 使用 lambda 來創建匿名函數。所謂匿名,意即不再使用 def 語句這樣標準的形式定義一個函數。lambda的主體是一個表達式,而不是一個代碼塊,它的語法只包含一個語句,如下:lambda [arg1 [,arg2,.....argn]]:expression

古老師:沒錯。那你現在再看看小美寫的check_id_num()函數,能不能使用map()函數來表達呢?

阿福:這個。。。。。。我明白了!可以先使用map()函數生成一個新的序列,再使用內置函數sum()對序列求和,這樣可以用一條賦值語句代替原來的for循環。

?代碼4

def check_id_num(id_num): factor = (7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2) #校驗碼系數 remainder = '10X98765432' #余數表 s = sum(map(lambda x, y: x * int(y), factor, id_num)) return remainder[s%11] == id_num[-1]古老師:不錯不錯!看來你已經領會到map()函數的精髓了。繼續努力,迎接更大的挑戰。今天就到這吧,下次有事記得叫我。

溫馨提示:

有事沒事最好拉到文末看看,說不定作者今天提供了彩蛋哦!說在后面

Python算法之旅系列文章源于我平時收集和整理的一些題目,我嘗試用自己的語言把這些題目進行了再創作。由于本人水平有限,表述中難免出現疏漏甚至錯誤之處,敬請諒解。

無論是贊同還是反對我的看法,都請你給我留言。如果你有新的想法,千萬不要憋在心里,請發出來大家一起討論。讓我們相互學習,共同進步!

需要本文word版的,可以加入“Python算法之旅”知識星球參與討論和下載文件,“Python算法之旅”知識星球匯集了數量眾多的同好,更多有趣的話題在這里討論,更多有用的資料在這里分享。

我們專注Python算法,感興趣就一起來!

?彩蛋

除了使用map()函數生成一個新的序列,我們還可以用列表生成器來生成新序列,然后使用sum()函數對序列求和。

?代碼5

def check_id_num(id_num): factor = (7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2) #校驗碼系數 remainder = '10X98765432' #余數表 s = sum([factor[i] * int(id_num[i]) for i in range(len(factor))]) r = s % 11 return remainder[s%11] == id_num[-1]

相關優秀文章:

閱讀代碼和寫更好的代碼

最有效的學習方式

字符串游戲之身份證號的秘密

總結

以上是生活随笔為你收集整理的.net mvc actionresult 返回字符串_字符串游戏之无效的身份证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。