西北工业大学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)
建议大概了解下述函数库的基本运用之后再完成题目会更顺利。
常用方式:假设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