1. sys.stdin.readline()和input()区别
#********sys.stdin.readline()作为输入
import sys
line = sys.stdin.readline() #nihao
print(line) #nihao \n
print(line.strip()) #nihao
print(type(line)) #<class 'str'>
#*******input()作为输入时
line = input()#python3用的是input(),不用raw_input()
print(line) #nihao
print(line.strip()) #nihao
print(type(line)) <class 'str'>
2. 实例练习
#****************题目******************************
# 设有n个正整数,将他们连接成一排,组成一个最大的多位整数。
# 如:n=3时,3个整数13,312,343,连成的最大整数为34331213。
# 如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。
import sys
from functools import cmp_to_key
def mycmp(x,y):
if x+y >y+x:
return 1
elif x== y:
return 0
else:
return -1
for i,v in enumerate(sys.stdin.readlines()):
if i%2 == 1:
v=v.strip().split()
v.sort(key=cmp_to_key(mycmp),reverse=True)
if v[0] == '0':
print('0')
else:
print(''.join(v).lstrip('0'))
涉及到的知识点:
- enumerate()函数
- strip(),lstrip(),rstrip()
- sort(key,reverse)。True:倒序排序;False:正序排序;
- join()函数: ' -'.join(['1' , '2', '3']) 1-2-3
NOTE:
出现的问题:尝试使用v.sort(reverse=True)。
结果:简单的都ok,但是29 和291比价的时候出现问题,此时输出:29129;
应该为:29291。所以,不加cmp_to_key()存在bug。
v.sort():改变v
sorted(v):不改变v