当先锋百科网

首页 1 2 3 4 5 6 7

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'))

涉及到的知识点:

  1. enumerate()函数
  2. strip(),lstrip(),rstrip()
  3. sort(key,reverse)。True:倒序排序;False:正序排序;
  4. 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