中国银行——输出pi前n个数字
import sys
pi = "3.1415926535897932384626"
if len(sys.argv) > 1:
n = int(sys.argv[1])
else:
print("请从命令行输入一个整数n")
sys.exit(1)
# 确保n不大于我们硬编码的π值的长度
if n > len(pi_str) - 3: # 减去3是因为我们包括了整数部分和小数点
print("n太大,超出了我们预定义的π值的长度")
sys.exit(1)
pi_n = pi[:n]
print(pi_n)
中国银行——合并单链表
n=int(input())
w=list(map(int,input().split()))
l,r=0,0
res=[]
while l<n:
r=l
num=w[r] #这一轮存入链表中的数字
while r+1<n and w[r+1]==w[r]:
num+=w[r]
r+=1
res.append(num)
l=r+1
for x in res:
print(x,end=' ')
中国银行——字符串排序
n = int(input())
cnts = {} # 用于存储字符串及其出现次数
s=input().split()
for x in s:
cnts[x] = cnts.get(x, 0) + 1 # 计算每个字符串出现的次数
# 将字符串按照出现次数降序排序,出现次数相同的按照字典序升序排序
p = sorted(cnts.keys(), key=lambda x: (-cnts[x], x))
for str in p:
print(str, end=" ")
- 遍历列表
s
中的每个字符串x
,使用cnts.get(x, 0)
获取x
在cnts
中的当前计数(如果x
不在cnts
中,则返回0
),然后将该计数加1
并更新到cnts
中。 - 使用
sorted()
函数对cnts
的键(即字符串)进行排序。排序的关键在于key
参数,这里使用了一个lambda函数lambda x: (-cnts[x], x)
。(因为Python的sorted()
函数默认是升序排序,所以取负值可以实现降序)。如果两个字符串的出现次数相同,那么就会按照字符串本身的字典序(即字母顺序)进行升序排序,这是由lambda
函数中的x
部分保证的。