写累了,直接看代码吧
里面还是有很多重复性的代码,有待提高
# 获取列表下标
def xbiao(ge):
x = 0
while x < 10:
if ge == ltwo[x]:
ff3 = x
break
else:
x = x + 1
return x
# 找出万的下标
def zwanb(aa, list):
i = 0
while i < aa:
if list[i] == '万':
xbb1 = i
break
else:
i = i + 1
return i
# 找出亿的下标
def zyib(aa, list):
i = 0
while i < aa:
if list[i] == '亿':
xbb = i
break
else:
i = i + 1
return xbb
# 计算
# 读亿万的数
def duyw():
aa = len(lzwsz)
j1 = zyib(aa, lzwsz)
lj1 = list(lzwsz[:j1])
print(lj1)
sum112 = int(dushu(lj1)) * 100000000
print(sum112)
lj2 = list(lzwsz[j1 + 1:])
sum13 = sum112
if '万' in lzwsz:
aa1 = len(lj2)
j21 = zwanb(aa1, lj2)
print(j21)
lj21 = list(lj2[:j21])
print(lj21)
sum113 = int(dushu(lj21)) * 10000
sum13 = sum13 + sum113
print(sum113)
laa = list(lj2[j21 + 1:])
cc = len(laa)
if cc == 0:
pass
else:
sum12 = int(dushu(laa))
sum13 = int(sum13) + int(sum12)
else:
print("无万")
aa2 = len(lj2)
if aa2 != 0:
sum12 = dushu(lj2)
sum13 = sum12 + sum13
return sum13
# 读万的数
def duw():
aa = len(lzwsz)
j1 = zwanb(aa, lzwsz)
lj1 = list(lzwsz[:j1])
laa = list(lzwsz[j1 + 1:])
aaa = len(lj1)
a = 0
sum12 = int(dushu(lj1))
sum12 = sum12 * 10000
sum13 = int(dushu(laa))
sum13 = int(sum12) + int(sum13)
return sum13
# 读千以内的数字
def dushu(list):
a = 0
aa = len(list)
sum1 = 0
ge = list[aa - 1]
if ge not in lone:
ff1 = xbiao(ge)
sum1 = sum1 + ff1
while a < aa:
ee = list[a]
if ee in lone:
c1 = lone[ee]
d1 = list[a - 1]
f1 = xbiao(d1)
g1 = int(f1) * int(c1)
sum1 = sum1 + g1
a = a + 1
else:
a = a + 1
return sum1
done = {'亿': '100000000', '万': '10000'}
lone = {'千': '1000', '百': '100', '十': '10'}
ltwo = ['A', '一', '二', '三', '四', '五', '六', '七', '八', '九']
# 九千九百九十九亿九千九百九十九万九千九百九十九
zwsz = '九千九百九十九亿九千九百九十九万一千'
lzwsz = list(zwsz)
print(lzwsz)
if '亿' in lzwsz:
print("亿在")
if '万' in lzwsz:
print("万也在")
sum22 = duyw()
print(sum22)
else:
print("亿在万不在")
sum22 = duyw()
print(sum22)
else:
print("亿不在")
if '万' in lzwsz:
print("万在")
sum22 = duw()
print(sum22)
else:
print("万也不在")
sum22 = dushu(lzwsz)
print(sum22)