西北工业大学NOJ-Python程序设计作业61-70

西北工业大学NOJ-Python程序设计作业题解集合:
NOJ-Python程序设计:第1季:水题(Season 1-Easy) (1-10)
NOJ-Python程序设计:第2季:小段代码(Season 2-Snippet) (11-20)
NOJ-Python程序设计:第3季:循环(Season 3-Loop) (21-30)
NOJ-Python程序设计:第4季:枚举算法(Season 4-Enumeration algorithm) (31-40)
NOJ-Python程序设计:第5季:模块化(Season 5-Modularization) (41-50)
NOJ-Python程序设计:第6季:字符串(Season 6-String) (51-60)
NOJ-Python程序设计:第7季:列表与元组(Season 7-List and Tuple) (61-70)
NOJ-Python程序设计:第8季:集合与字典(Season 8-Sets and Dictionary) (71-80)
NOJ-Python程序设计:第9季:类(Season 9-Class) (81-90)
NOJ-Python程序设计:第10季:挑战算法(Season 10-Challenges) (91-100)

第7季:列表与元组(Season 7-List and Tuple)(61-70)

西北工业大学NOJ-Python程序设计作业61-70

前置知识点

建议大概了解下述函数库的基本运用之后再完成题目会更顺利。

列表排序:

常用方式:假设l是列表,元素都是整数,可以直接l.sort(),默认从小到大排序,如果l.sort(reverse=True)则从大到小排序,也可以在内部设置key排序规则,比如:l.sort(key=lambda a:a[1])就相当于以第二个参数为关键字排序(key=lambda是固定写法)。

列表元素统计:

l.count(n)表示l中和n相同的元素个数

元组类型转换:

假如l是列表,那么要转换成元组可以l=tuple(l)

排序Ⅰ

西北工业大学NOJ-Python程序设计作业61-70

l=list(map(int,input().split()))
l.sort(reverse=True)
for it in l:
    print(it,end=' ')
#-1 -67 92 99
# Code By Phoenix_ZH

反转元组

西北工业大学NOJ-Python程序设计作业61-70

l1=list(map(int,input().split()))
l2=list(reversed(l1))
for i in range(0,len(l1)):
    l2[i]=l1[i]+l2[i]
ans=tuple(l2)
print(ans)
# Code By Phoenix_ZH

列表切片

西北工业大学NOJ-Python程序设计作业61-70

x1,x2=map(int,input().split())
l=list(map(int,input().split()))
print(l[x1:x2])
'''
2 5
1 2 3 4 5 6 7 8 9 0
'''
# Code By Phoenix_ZH

元素相乘

西北工业大学NOJ-Python程序设计作业61-70

l=list(map(int,input().split()))
ans=1
for it in l:
    ans=ans*it
print(ans)
# Code By Phoenix_ZH

列表差异

西北工业大学NOJ-Python程序设计作业61-70

先枚举l1列表的元素,判断它是否在l2中存在,输出不存在的;同理再枚举l2即可。

l1=list(map(int,input().split()))
l2=list(map(int,input().split()))
for it in l1:
    if(it in l2):
        continue
    print(it,end=' ')
for it in l2:
    if(it in l1):
        continue
    print(it,end=' ')
# Code By Phoenix_ZH

循环相同

西北工业大学NOJ-Python程序设计作业61-70

判断列表l1是否与l2相同,一旦相同输出True并且中断程序,否则将首部的元素添加到末尾并删除首部该元素。

import sys
l1=list(input().split())
l2=list(input().split())
for i in range(len(l2)):
    if(l1==l2):
        print("True")
        sys.exit(0)
    x=l1[0]
    del l1[0]
    l1.append(x)
print("False")
'''
A C G T A A
A A A C G T
'''
# Code By Phoenix_ZH

排序Ⅲ

西北工业大学NOJ-Python程序设计作业61-70

以第二个元素为关键字排序

l=input().split(';')
result=[]
for it in l:
    it=it.strip('(')
    it=it.strip(')')
    x,y=map(int,it.split(','))
    result.append((x,y))
result.sort(key=lambda a:a[1])#以元组的第二个元素作为关键字
print(result)
#(1,105);(2,102);(3,104);(4,103);(5,101)
# Code By Phoenix_ZH

元组重复项

西北工业大学NOJ-Python程序设计作业61-70

直接使用列表的count函数。

n=int(input())
l=list(map(int, input().split()))
print(l.count(n))
# Code By Phoenix_ZH

排序Ⅱ

西北工业大学NOJ-Python程序设计作业61-70

以整数部分进行从小到大排序。

l=list(input().split(','))
l.sort(key=lambda a:(int(a[1:])))
for it in l:
    print(it,end=' ')
#a1,a22,a3,a8,a10,a100
# Code By Phoenix_ZH

重复字符

西北工业大学NOJ-Python程序设计作业61-70

设定一个 v i s [ ] vis[] vis[]进行字符标记,遍历一遍,然后对数量大于1的进行按序输出。

vis=[0 for i in range(200)]
s=input()
for it in s:
    vis[ord(it)]+=1
for it in s:
    if(vis[ord(it)]>=2):
        print(it,vis[ord(it)])
        vis[ord(it)]=0
#googleapplemicrosoft
# Code By Phoenix_ZH
上一篇:C语言再探索—详解分支与循环语句


下一篇:学生管理系统主界面