矩阵翻转问题

晓萌最近在做一个翻转图片的应用,你可能也知道,图片其实是由一个个的点组成的。于是,晓萌想先做一个可以翻转矩阵的程序,来解决他问题的核心部分。
输入格式

输入第一行包括由空格分开的整数 M,N,T(0< N,M<200)T 的值为 0 或 1。其中 M和 N 分别表示待处理矩阵的行数与列数,T 为 0 时表示左右翻转,为 1 时表示上下翻转。

之后的 M 行,每行包括由空格分隔的 N 个整数,依次为输入矩阵的每一行的数据。
输出格式

输出包括 M 行 N 列,每个数字之间用一个空格分隔,每一行行末均有一个空格,表示的是按照要求翻转后的矩阵。
样例输入

4 4 1
1 2 3 4
5 6 7 8
9 0 1 2
3 4 5 6

样例输出

3 4 5 6
9 0 1 2
5 6 7 8
1 2 3 4

分析:
这个问题其实不难,主要是矩阵的输入问题,input()函数的字符串的操作问题

python中没有字符类型的说法,只有字符串!
1.join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
如:

>>> s1 = " "
>>> seq = ['r','u','n','o']
>>> s1.join(seq)
'r u n o'

>>> s2 = '-'
>>> s2.join(seq)
'r-u-n-o'
  1. split()就是将一个字符串分裂成多个字符串组成的列表
    str.split(str="", num=string.count(str)).
str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num -- 分割次数。

如:

>>> s = 'this is my hobby'
>>> s.split()
['this', 'is', 'my', 'hobby']
>>> s1 = 'this_is_my_hobby'
>>> s1.split('_')
['this', 'is', 'my', 'hobby']
>>> s1
'this_is_my_hobby'
>>> s1.split('_',2)
['this', 'is', 'my_hobby']

与input的搭配使用:

>>> x = input().split()
1 23 4 56
>>> x
['1', '23', '4', '56']

list的二维数组的定义:

>>> [[ 0 for i in range(4)] for i in range(3)]
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

代码如下:

a = [[0 for i in range(200)]for i in range(200)]
b = [[0 for i in range(200)]for i in range(200)]
def reverse_up(m,n):
    for i in range(m):
        for j in range(n):
            b[m-i-1][j]=a[i][j]
def reverse_left(m,n):
    for i in range(m):
        for j in range(n):
            b[i][n-j-1]=a[i][j]

x=input().split()
M=int(x[0])
N=int(x[1])
T=int(x[2])
for i in range(M):
    x=input().split()
    for j in range(N):
        a[i][j]=int(x[j])
if T==1:
    reverse_up(M,N)
else:
    reverse_left(M,N)
for i in range(M):
    for j in range(N):
        print(b[i][j],end=" ")
    print()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值