本人python小白,最近在学习中,由于觉得标题无法明确解释我的问题,所以如下直接贴上我的小白脚本,哈哈。
该脚本是想求一个矩阵的对角线之和,现将矩阵的宽度输入给变量“N”,然后开始匹配输入的字符串规则是否类似于
1,2,3,4.....的格式,使用 re.match("(\d+,){N - 1}(\d+)$", ss) 来进行匹配,但改正则表达式中的 “N-1”并
没有如我想象中的那么进行数值计算,查了下使用eval和repr也无法成功,也不知道是我是用方式不对还是要更换
正则去实现,心塞~~~
if __name__ == '__main__': N = int(input("请输入矩阵宽度:")) list_1 = [] result = 0 for i in range(N): ss = input("请输入{0}个数字,以逗号间隔:".format(N)) r1 = re.match("(\d+,){N - 1}(\d+)$", ss) while r1 is None: ss = input("输入错误,请输入{0}个数字,以逗号间隔:".format(N)) r1 = re.match("(\d+,){N - 1}(\d+)$", ss) result += int(ss.split(',')[i]) print(result)
没想到在下午的学习过程突然想到是用print()时候发现变量在引号里面要结合%转换,所以下午试了这个就可以了。
re.match("(\d+,){%d}(\d+)$" % (N - 1), ss)