各位同学,创作不易,能否在文末打赏一瓶饮料呢?(^ _ ^)(文章末尾右下角处)
西北工业大学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)
这部分主要是运用前面的知识来实现算法题目,没有前置知识点。这部分题目比较简单,主要考察算法思路和代码规范。
镜像要求就是 o r d ( ′ a ′ ) + o r d ( ′ z ′ ) = o r d ( ′ b ′ ) + o r d ( ′ y ′ ) = . . . ord('a')+ord('z')=ord('b')+ord('y')=... ord(′a′)+ord(′z′)=ord(′b′)+ord(′y′)=...,所以算出 t = o r d ( ′ a ′ ) + o r d ( ′ z ′ ) t=ord('a')+ord('z') t=ord(′a′)+ord(′z′),然后从第 n − 1 n-1 n−1位开始就要镜像交换字符,在此之前还是原字符。
t=ord('a')+ord('z')
s=input()
n=int(input())-1
ans=''
for i in range(len(s)):
if(i<n):
ans=ans+s[i]
else:
ans=ans+chr(t-ord(s[i]))
print(ans)
# Code By Phoenix_ZH
看图可以看出三角形数量: 1 + 2 + 3 + . . . + n 1+2+3+...+n 1+2+3+...+n,所以火柴棒数量就是 ( n + 1 ) ∗ n / 2 ∗ 3 (n+1)*n/2*3 (n+1)∗n/2∗3
n=int(input())
ans=(n+1)*n//2*3
print(ans)
# Code By Phoenix_ZH
注意AM 12 转成24小时为00; PM 12 转成24小时仍为12。
l=input().split()
t=l[0].split(':')
if(t[0]=='12' and l[1]=='AM'):
t[0]='00'
elif(t[0]!='12' and l[1]=='PM'):
t[0]=str(int(t[0])+12)
print(':'.join(t))
# Code By Phoenix_ZH
将列表的 [ 0 : n ] [0:n] [0:n]加入到末尾,然后再将 [ 0 : n ] [0:n] [0:n]删除即可。或者进行遍历得到新的列表。
l=list(map(int,input().split()))
n=int(input())
for i in range(n):
l.append(l[i])
del l[0:n]
l=map(str,l)
print(' '.join(l))
# Code By Phoenix_ZH
创建字典,按照给定的列表对应得到键值对,然后调用sorted函数,并以value为关键字排序,得到的是list,然后通过dict()
转换成字典,然后输出字典的所有键。
key=input().split()
value=input().split()
dic=dict(zip(key,value))
dic=dict(sorted(dic.items(),key=lambda x:(x[1])))
print(' '.join(dic.keys()))
# Code By Phoenix_ZH
模拟Z字形的走位即可。
n=int(input())
a=[]
for i in range(n):
a2=list(input().split())
a.append(a2)
ans=[]
for i in range(n-1):
ans.append(a[0][i])
for i in range(n):
ans.append(a[i][n-i-1])
for i in range(1,n):
ans.append(a[n-1][i])
print(' '.join(ans))
# Code By Phoenix_ZH
构造斐波那契数列,一旦当前数是k的倍数就 n − = 1 n-=1 n−=1,直到 n = 0 n=0 n=0,最后查看斐波那契数列的长度。
f=[0,1,1]
n,k=map(int,input().split())
while(n):
x=f[len(f)-1]+f[len(f)-2]
f.append(x)
if(x%k==0):
n-=1
print(len(f)-1)
# Code By Phoenix_ZH
题目很不清晰:一个字符串是否允许出现相同的字符?
如果保证了一个字符串中各个字符互不相同,那直接求交集即可,然后输出长度。于是我乱交了一发,AC了。数据很假
如果不保证互不相同,恐怕最简单的做法就是O(n^2)搜索一遍
l1,l2=input().split()
l1,l2=set(l1),set(l2)
l1=l1.intersection(l2)
print(len(l1))
# Code By Phoenix_ZH
直接得到列表,然后直接线性遍历,更新maxx。或者直接sort也可以。
maxx=-1e9
l=list(map(int,input().split()))
for it in l:
maxx=max(maxx,it)
print(maxx)
# Code By Phoenix_ZH
需要构造正则表达式,然后在字符串st中调用findall函数,输出答案列表。
import re
st = input()
result=re.findall(r'(?:https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]', st)
print(result)
# Code By Phoenix_ZH