1. 前言
??對(duì)于給定的正整數(shù)N(N最大為5位數(shù))鸽粉,求其整數(shù)位數(shù)斜脂,及個(gè)位、十位触机、百位帚戳、千位和萬(wàn)位的值,同時(shí)儡首,舉個(gè)例子片任,如果N是一個(gè)三位數(shù),那么蔬胯,只求其個(gè)位对供、十位和百位。
2. 例子
2.1 輸入一個(gè)一位數(shù)
請(qǐng)輸入一個(gè)數(shù):> 8
你輸入的是一個(gè)一位數(shù)
8 的個(gè)位為: 8
2.2 輸入一個(gè)兩位數(shù)
請(qǐng)輸入一個(gè)數(shù):> 45
你輸入的是一個(gè)兩位數(shù)
45 的十位為: 4 ,個(gè)位為: 5
2.3 輸入一個(gè)三位數(shù)
請(qǐng)輸入一個(gè)數(shù):> 45128
你輸入的是一個(gè)五位數(shù)
45128 的萬(wàn)位為: 4 ,千位為: 5 ,百位為: 1 ,十位為: 2 ,個(gè)位為: 8
3. 代碼實(shí)現(xiàn)
# %% 實(shí)現(xiàn)的功能
# 1. 判斷輸入的整數(shù)是幾位數(shù)氛濒,最大可判斷5位數(shù)
# 2. 求出每個(gè)位數(shù)上的值
# 請(qǐng)輸入一個(gè)數(shù)
m = int(input("請(qǐng)輸入一個(gè)數(shù):"))
if 0 < m < 9: # 在c/c++中不支持這種寫(xiě)法
print("你輸入的是一個(gè)一位數(shù)")
gw = m % 10
print(m, "的個(gè)位為:", gw)
elif 0 < m // 10 < 9:
print("你輸入的是一個(gè)兩位數(shù)")
gw = m % 10
sw = m // 10
print(m, "的十位為:", sw, ",個(gè)位為:", gw)
elif 0 < m // 100 < 9:
print("你輸入的是一個(gè)三位數(shù)")
gw = m % 10
sw = m // 10 % 10
bw = m // 100
print(m, "的百位為:", bw, ",十位為:", sw, ",個(gè)位為:", gw)
elif 0 < m // 1000 < 9:
print("你輸入的是一個(gè)四位數(shù)")
gw = m % 10
sw = m // 10 % 10
bw = m // 100 % 10
qw = m // 1000
print(m, "的千位為:", qw, ",百位為:", bw, ",十位為:", sw, ",個(gè)位為:", gw)
elif 0 < m // 10000 < 9:
print("你輸入的是一個(gè)五位數(shù)")
gw = m % 10
sw = m // 10 % 10
bw = m // 100 % 10
qw = m // 1000 % 10
ww = m // 10000
print(m, "的萬(wàn)位為:", ww, ",千位為:", qw, ",百位為:", bw, ",十位為:", sw, ",個(gè)位為:", gw)
4. 代碼解釋
- 首先要判斷輸入的整數(shù)是幾位數(shù)产场,我這里的思路是若該數(shù)在0~9之內(nèi),則為一位數(shù)泼橘;若該數(shù)整除10后結(jié)果在0~9之內(nèi)涝动,則為兩位數(shù);若該數(shù)整除100后結(jié)果在0~9之內(nèi)炬灭,則為三位數(shù);若該數(shù)整除100后結(jié)果在0~9之內(nèi),則為三位數(shù)重归;若該數(shù)整除1000后結(jié)果在0~9之內(nèi)米愿,則為四位數(shù);若該數(shù)整除10000后結(jié)果在0~9之內(nèi)鼻吮,則為五位數(shù)育苟;而Python整除的符號(hào)為//, 對(duì)應(yīng)的代碼如下:
if 0 < m < 9: # 判斷一位數(shù)
elif 0 < m // 10 < 9: # 判斷兩位數(shù)
elif 0 < m // 100 < 9: # 判斷三位數(shù)
elif 0 < m // 1000 < 9: # 判斷四位數(shù)
elif 0 < m // 10000 < 9: # 判斷五位數(shù)
- 其次要得到整數(shù)的各個(gè)位上的數(shù),以輸入45128為例椎木,對(duì)應(yīng)的個(gè)位十位百位千位萬(wàn)位的獲取代碼如下:
# m為輸入的一個(gè)五位數(shù)违柏,這里設(shè)為45128
gw = m % 10
sw = m // 10 % 10
bw = m // 100 % 10
qw = m // 1000 % 10
ww = m // 10000
- 如上所示, 用m對(duì)10取余香椎,則可得個(gè)位漱竖,用m對(duì)10000取整,即可得到萬(wàn)位畜伐。再對(duì)中間三個(gè)位進(jìn)行分析馍惹,中間位值求法有固定套路,都是先取整再取余玛界,
1.比如說(shuō)万矾,想求十位上的值,則先對(duì)10取整慎框,再對(duì)10取余良狈;- 想求百位上的值,則先對(duì)100取整笨枯,再對(duì)10取余薪丁;
- 想求千位上的值,則先對(duì)1000取整猎醇,再對(duì)10取余窥突;
- 再舉一個(gè)例子,假設(shè)輸入的m為四位數(shù)硫嘶,其值為2456阻问,對(duì)于四位數(shù)而言,其中間只有十位和百位沦疾,所以:
1.想求十位上的值称近,則先對(duì)10取整,再對(duì)10取余哮塞;
2.想求百位上的值刨秆,則先對(duì)100取整,再對(duì)10取余忆畅; - 對(duì)應(yīng)代碼如下:
sw = m // 10 % 10 # 十位
bw = m // 100 % 10 # 百位
6.總結(jié)衡未,不管是五位數(shù)還是四位數(shù)還是多少位數(shù),求其中間的位的值的規(guī)則都是類(lèi)似的,先整除后取整缓醋。
5.總結(jié)
??對(duì)于求一個(gè)整數(shù)有多少位數(shù)的問(wèn)題如失,我所使用的方法還是算笨的,不適合進(jìn)一步擴(kuò)展送粱,實(shí)際上可以將求位數(shù)的功能封裝成一個(gè)函數(shù)褪贵,思路可以是將整數(shù)轉(zhuǎn)為字符串再進(jìn)行長(zhǎng)度統(tǒng)計(jì),具體的求法可參考以下鏈接抗俄。
python求數(shù)字位數(shù)的方法