python作业6cqupt

作业6

【问题描述】
输入一个自然数N(2到9之间),要求输出如下的魔方阵,即边长为NN,元素取值为1至NN,1在

左上角,呈顺时针方向依次放置各元素。
N=3时:
1 2 3
8 9 4
7 6 5
【输入形式】
从标准输入读取一个整数N。
【输出形式】
将结果输出到文件文件file.out。输出符合要求的方阵,每个数字占5个字符宽度,向右对齐,在每一行末均输出一个回车符。
【输入样例】
4
【输出样例】输出文件file.out内容为:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

【评分标准】
本题不准使用数学库函数。结果正确得20分,每个测试点4分。

【提示】

print函数的格式化控制串可用来控制每个数字的占位宽度。以下输出写法使67占5个字符宽度。

 print("%5d"%(67))![在这里插入图片描述](https://img-blog.csdnimg.cn/20210429180300188.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzUxNjc3Njc0,size_16,color_FFFFFF,t_70#pic_center)

我就不多bb了。

n = int(input())
s = [0] * n
ans = []
num = 1
x, y, i, j = 0, 0, 0, 0
for i in range(n):
    ans.append(s[:])
i = 0
q = n*n
while num <=q :
    for p in range(n):
        ans[i][j] = num
        num += 1
        j+=1
    n -= 1
    i += 1
    j -= 1
    for p in range(n):
        ans[i][j] = num
        num += 1
        i += 1
    i -= 1
    j -= 1
    for p in range(n):
        ans[i][j] = num
        num += 1
        j -=1
    j += 1
    i -= 1
    n -=1
    for p in range (n):
        ans[i][j] = num
        num += 1
        i -= 1
    i += 1
    j += 1
with open("file.out", "w") as file:
    for p in ans:
        for f in p:
            file.write("%5d"%f)
        file.write("\n")

文件排版22

英文电影中参演人员名单一般以某种方式进行排版显示。给定一个未排版的文件listin.txt,该文件中每行参演人员名单由冒号’:'分隔成前后两部分,但格式杂乱无章,单词(由除空格和水平制表符之外的其它字符构成)之间可能有多个空格或水平制表符分隔。编写程序,要求将其按如下排版规则排版输出到另一个文件listout.txt中:

1.从标准输入读取一整数,作为排版后所有各行冒号’:‘在一行中的固定位置;假设输入的整数肯定大于排版后所有各行冒号’:'前的字符个数,位置从1开始计数;

2.冒号’:‘左边的单词串以冒号为基准右对齐,左边的第一个单词之前如果有多余的位置,则以空格填充;冒号’:‘右边的单词串以冒号’:'为基准左对齐,最后一个单词后只有回车换行符,不再有其它字符;

3.冒号’:'左右两边的单词间都只有一个空格分隔,并且要求冒号两边各有一个空格与单词分隔。

假设输入文件中每行字符个数不超过100。

【输入形式】

待排版的参演人员名单从当前目录下的listin.txt文件中读入;表示冒号’:'位置的整数从标准输入读入。

【输出形式】

排版后的参演人员名单输出到当前目录下的listout.txt中。

【输入样例】

假设文件listin.txt内容为:

Digital Intermediate by : EFILM

Supervising Digital Colorist : STEVEN J. SCOTT

Second Colorist :ANDREW FRANCIS

Digital Intermediate Producer:LOAN PHAN

Digital Intermediate Editor: DEVON MILLER

表示冒号固定位置的整数为:

40
在这里插入图片描述

with open("listout.txt","w") as f:
    f.write("")
loca = int(input())
with open(r"listin.txt", "r") as f:
    data = f.readlines()
    a = []
    str_lens = []
    for line in data:
        flag = False
        for i in line:
            if i == " " or i == "\t":
                if flag == False:
                    if i == " ":
                        a.append(i)
                        flag = True
                    if i == "\t":
                        a.append(" ")
                        flag = True
                else:
                    continue
            else:
                flag = False
                a.append(i)
        cache_str = "".join(a)
        cache_list = cache_str.split(":")
        print(cache_list)
        for i in range(len(cache_list)):
            cache_list[i] = cache_list[i].strip()
        str_lens.append(len(cache_list[0]))
        with open("listout.txt","a") as q:
            q.write(" "*(loca-len(cache_list[0])-2)+cache_list[0]+" : "+cache_list[1]+"\n")
        a = []
    print(str_lens)

二维列表排序

有以下两个二维列表,第一个列表的元素是元组,请对其按列表元素的第 2 个元素值从小到大进行排序输出,输出其前 m 项;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

第二个列表的元素仍是列表,请对其分别按每个元素的第 1 和第 3 个元素值从小到大进行排序,输出其前 n 项。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

m 和 n 是由用户输入的非负整数,当 m 或 n 大于列表长度时,对整个列表进行排序输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

列表一: [(‘dungeon’,7),(‘winterfell’,4),(‘bran’,9),(‘meelo’,6)]‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

列表二: [[ ‘Angle’, ‘0121701100106’,99], [ ‘Jack’, ‘0121701100107’,86], [ ‘Tom’, ‘0121701100109’,65], [ ‘Smith’, ‘0121701100111’, 100], [‘Bob’, ‘0121701100115’,77], [‘Lily’, ‘0121701100117’, 59]]

【输入形式】在两行中分别输入正整数m 和 n

列表一排序后的前 m 项‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

列表二按第 1 个元素值升序排序的前 n 项‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

列表二按第 3 个元素值升序排序的前 n 项

import numpy as np
m=int(input())
n=int(input())
a=[('dungeon',7),('winterfell',4),('bran',9),('meelo',6)]
# a=[('dungeon',7),('winterfell',4),('bran',9),('meelo',6)]‪‬‪‬‪‬‪‬‪‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬
b= [[ 'Angle', '0121701100106',99], [ 'Jack', '0121701100107',86], [ 'Tom', '0121701100109',65], [ 'Smith', '0121701100111', 100], ['Bob', '0121701100115',77], ['Lily', '0121701100117', 59]]
a.sort(key=lambda x: x[1], reverse=False)
if m>=4:
    print(a[0:4])
else:
    print(a[0:m])
b.sort(key=lambda x: x[0], reverse=False)
if n>=6:
    print(b[0:6])
else:
    print(b[0:n])
# print(b[0:n])
b.sort(key=lambda x: x[2], reverse=False)
if n>=6:
    print(b[0:6])
else:
    print(b[0:n])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夭辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值