西北工业大学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)
前置知识点
建议大概了解下述函数库的基本运用之后再完成题目会更顺利。
列表排序:
常用方式:假设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)
排序Ⅰ
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
反转元组
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
列表切片
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
元素相乘
l=list(map(int,input().split()))
ans=1
for it in l:
ans=ans*it
print(ans)
# Code By Phoenix_ZH
列表差异
先枚举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
循环相同
判断列表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
排序Ⅲ
以第二个元素为关键字排序
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
元组重复项
直接使用列表的count函数。
n=int(input())
l=list(map(int, input().split()))
print(l.count(n))
# Code By Phoenix_ZH
排序Ⅱ
以整数部分进行从小到大排序。
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
重复字符
设定一个 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