python上机题目 把输入的文字转成古代竖排输出怎么做

时间:2021-12-08 11:48:21
今天我去笔试...结果遇到这题目...顿时...无语- -....请高手帮帮我.
如:输入" 床前明月光 疑是地上霜 举头望明月 低头思故乡"
题目是要用python做的. 可是..我想用c语言的 "\0"来控制..段落的结尾.可是..python不认这个指令.........我又想了各种方法...始终..还是无果..因为 python..的字符串...从头到脚我只看到 英文的...因为 英文和中文的又不一样.一个是 算 1位 1个算2位..
所以一直乱码.........我的汗...飘的...
句子要一次性输入. 带空格的..
输出:
低    举    疑    床
头    头    视   前
思    望    地   明
故    明    上   月 
乡    月    霜   光  
这样....... 求帮助

10 个解决方案

#1


2D矩阵右旋90度,py312写的

#coding=utf-8

a = "床前明月光 疑是地上霜 举头望明月 低头思故乡";
a += ' ';
for i in range(0, 6):
    for j in range(0, 4):
        c = a[(3-j)*6+i];
        if(c == ' '): continue;
        if(j == 3): c += '\n';
        print(c, end='');

#2


再来个C的,python的其实可以当5列判断

#include "stdio.h"

int main(){

setlocale(LC_ALL, "chs");
wchar_t *s = L"床前明月光 疑是地上霜 举头望明月 低头思故乡", c;
int i, j;
for(i = 0; i < 5; ++i)
for(j = 0; j < 4; ++j){
c = s[(3-j)*6+i];
putwchar(c);
if(j == 3) putwchar('\n');
}
return 0;
}

#3


x = u'床前明月光 疑是地上霜 举头望明月 低头思故乡'
print '\n'.join(' '.join(x[::-1]) for x in zip(*map(list, x.split(' '))))

#4


有些多余的。

#coding=utf-8

a = "床前明月光 疑是地上霜 举头望明月 低头思故乡";
for i in range(5):
    for j in range(4):
        c = a[(3-j)*6+i];
        print(c, end='');
    print();


明天再看看,这题有点意思

#5


果然达人!
楼主面的啥公司啊 面试题这么诡异

#6


厦门网游网络....
我面试   脚本......

#7


不管怎么搞....gbk  还是 ut8  还是不能把中文字符串分割成字啊...汗

#8


搞不定编码就先放着吧,直接:
x = u'\u5e8a\u524d\u660e\u6708\u5149 \u7591\u662f\u5730\u4e0a\u971c \u4e3e\u5934\u671b\u660e\u6708 \u4f4e\u5934\u601d\u6545\u4e61'

#9



>>> from itertools import izip 
>>> s = u'床前明月光 疑是地上霜 举头望明月 低头思故乡'
>>> l = [ c for c in s if c.strip() ]
>>> for l in  izip(l[:5], l[5:10], l[10:15], l[15:]):
...     print ''.join(l)[::-1]
... 
低举疑床
头头是前
思望地明
故明上月
乡月霜光


numpy

>>> import numpy as np
>>> s = u'床前明月光 疑是地上霜 举头望明月 低头思故乡'
>>> l = [ c for c in s if c.strip() ]
>>> a = np.array(l)
>>> for line in np.transpose((a.reshape(4, 5))):
...     print ''.join(line)[::-1]
... 
低举疑床
头头是前
思望地明
故明上月
乡月霜光
>>> 

#10


引用 7 楼 jkl8007 的回复:
不管怎么搞....gbk 还是 ut8  还是不能把中文字符串分割成字啊...汗

应该没啥问题,试试下面代码

#coding=utf-8
a = u"床前明月光 疑是地上霜 举头望明月 低头思故乡";
for i in range(5):
    for j in range(4):
        print a[(3-j)*6+i],;
    print;

注意你的文件也得是utf8保存。

#1


2D矩阵右旋90度,py312写的

#coding=utf-8

a = "床前明月光 疑是地上霜 举头望明月 低头思故乡";
a += ' ';
for i in range(0, 6):
    for j in range(0, 4):
        c = a[(3-j)*6+i];
        if(c == ' '): continue;
        if(j == 3): c += '\n';
        print(c, end='');

#2


再来个C的,python的其实可以当5列判断

#include "stdio.h"

int main(){

setlocale(LC_ALL, "chs");
wchar_t *s = L"床前明月光 疑是地上霜 举头望明月 低头思故乡", c;
int i, j;
for(i = 0; i < 5; ++i)
for(j = 0; j < 4; ++j){
c = s[(3-j)*6+i];
putwchar(c);
if(j == 3) putwchar('\n');
}
return 0;
}

#3


x = u'床前明月光 疑是地上霜 举头望明月 低头思故乡'
print '\n'.join(' '.join(x[::-1]) for x in zip(*map(list, x.split(' '))))

#4


有些多余的。

#coding=utf-8

a = "床前明月光 疑是地上霜 举头望明月 低头思故乡";
for i in range(5):
    for j in range(4):
        c = a[(3-j)*6+i];
        print(c, end='');
    print();


明天再看看,这题有点意思

#5


果然达人!
楼主面的啥公司啊 面试题这么诡异

#6


厦门网游网络....
我面试   脚本......

#7


不管怎么搞....gbk  还是 ut8  还是不能把中文字符串分割成字啊...汗

#8


搞不定编码就先放着吧,直接:
x = u'\u5e8a\u524d\u660e\u6708\u5149 \u7591\u662f\u5730\u4e0a\u971c \u4e3e\u5934\u671b\u660e\u6708 \u4f4e\u5934\u601d\u6545\u4e61'

#9



>>> from itertools import izip 
>>> s = u'床前明月光 疑是地上霜 举头望明月 低头思故乡'
>>> l = [ c for c in s if c.strip() ]
>>> for l in  izip(l[:5], l[5:10], l[10:15], l[15:]):
...     print ''.join(l)[::-1]
... 
低举疑床
头头是前
思望地明
故明上月
乡月霜光


numpy

>>> import numpy as np
>>> s = u'床前明月光 疑是地上霜 举头望明月 低头思故乡'
>>> l = [ c for c in s if c.strip() ]
>>> a = np.array(l)
>>> for line in np.transpose((a.reshape(4, 5))):
...     print ''.join(line)[::-1]
... 
低举疑床
头头是前
思望地明
故明上月
乡月霜光
>>> 

#10


引用 7 楼 jkl8007 的回复:
不管怎么搞....gbk 还是 ut8  还是不能把中文字符串分割成字啊...汗

应该没啥问题,试试下面代码

#coding=utf-8
a = u"床前明月光 疑是地上霜 举头望明月 低头思故乡";
for i in range(5):
    for j in range(4):
        print a[(3-j)*6+i],;
    print;

注意你的文件也得是utf8保存。