一道题:获得用户输入的一个数字,其中数字字符(0到9)用对应中文字符“〇一二三四五六七八九”替换,输出替换后的结果。
答案为:
n=input()
s="〇一二三四五六七八九"
for c in "0123456789":
n=n.replace(c,s[int(c):int(c)+1])
print(n)
一直对int函数不懂,这里更不懂为什么replace括号里的s[int(c):int(c)+1]是啥意思了。
编程小白TAT
求大佬指教!!!!
遍历“0123456789”的时候c是str类型,int是为了把str转为int
s[int(c):int(c)+1] 这里好像没必要用切片 直接s[int(c)]就好了
对于一个序列来说,比如s = “123456”
切片s[1:3]的结果是“23”,也就是变量s下标[1,3)区间元素,前闭后开。
s[start:end:step]这种形式叫做切片,可以找相关内容看一下。
input() 接收用户输入, 得到的输入结果都是 str(字符串类型的)
int() 函数是将全数字的字符串转换成整数类型 : str---->int
" s[int(c):int(c)+1] " 这个是列表的切片操作, 通过我上面的解释演示一下:
比如 c = "2" (注意:是字符串), 然后 int("2") 得到 数字:2 , 进而-----> s[2:3],
而 s[2:3] 指的是对列表 s 进行切片操作, 从索引 2 开始取到 3-1(取头不取尾), 于是拿到的就是 "二",
推荐你看一下列表的切片讲解 : https://www.cnblogs.com/songhaixing/p/14017968.html
这个是学习python得掌握的知识
输入的内容是str字符型,使用int强制转化为整型
也可以结合字典解题:
n = input("請輸入(0-9):")
x = "0123456789"
y = "〇一二三四五六七八九"
d = {}
# 生成字典{0: '〇', 1: '一', 2: '二', 3: '三', 4: '四', 5: '五', 6: '六', 7: '七', 8: '八', 9: '九'}
for i in x:
d[int(i)] = y[int(i)]
n = d[int(n)]
print(n)