编程题目(一)—— 数串

基础语法

见链接:

1、stdin与stdout的学习

sys.stdin.readline( )会将标准输入全部获取,包括末尾的'\n'

如:

import sys

hi1=input()
hi2=sys.stdin.readline()

print(len(hi1))

print(len(hi2))

结果

jdfkjkds
dskjkdf
8

8


在python中调用print时,事实上调用了sys.stdout.write(obj+'\n')

以下两行代码等价:
sys.stdout.write('hello' + '\n')

print('hello')


pycharm中运行输入:

sys.stdout.write('hello'+'\n')

结果

hello





2、3个字符处理函数 a.split()  \    a.path.split() (需要import os)   \       a.strip()   

split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)
语法:str.split(str="",num=string.count(str))[n]
参数说明:
str:表示为分隔符,默认为空格,但是不能为空('')。若字符串中没有分隔符,则把整个字符串作为列表的一个元素
num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量
[n]:   表示选取第n个分片

注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略


例:

#以"."为分隔符分割2次并取序号为[2]的元素 

a='a b . c.fgf.ghg'
b=a.split('.',2)[2]

print(b)

结果

fgf.ghg


#注意比较默认空格符和' '的区别  

'a b   c'.split()  

结果

 ['a', 'b', 'c']  


'a b   c'.split(' ')  

结果

['a', 'b', '', '', 'c']  


import sys
numbers=sys.stdin.readline()
a=numbers.strip()
b=a.split()    #将字符串变为字符串列表
print(numbers)
print(a)

print(b)

输出结果

12 3435 5
12 3435 5

12 3435 5
['12', '3435', '5']



#将完整的文件路径分离为文件所在文件夹路径和文件名  
import os  

print os.path.split('D:/Python/python3.6/untitled0.py')  

结果

('D:/Python/python3.6', 'untitled0.py') 





3、大小写zhuanhuan

#利用str.lower()he str.upper()来实现对字符串大小写的转换,巧妙使用列表生成式可过滤掉字符串中含有的空白字符等  
listOfTokens = ['I','am','','good','Boy']  
print [tok.lower() for tok in listOfTokens if len(tok) > 0]  

['i', 'am', 'good', 'boy']  







4、strip删除函数

#a.strip()函数使用实例    

语法: rm为要删除的字符序列,当rm为空时,默认删除空白符(包括'\n', '\r', '\t',  ' ')
str.strip(rm):删除字符串开头、结尾处,位于 rm删除序列的字符;
str.lstrip(rm):删除字符串开头处,位于 rm删除序列的字符;
str.rstrip(rm):删除字符串结尾处,位于 rm删除序列的字符。

c = ' \n\t\rpython  '    

c.strip()  

结果

'python'  


只对首尾进行切除

a='   python  rrrr\tdsfjdhjf   \r\n'
# b=a.strip()

print(a)

结果

   python  rrrr dsfjdhjf   



a='   python  rrrr\tdsfjdhjf   \r\n'
b=a.strip()

print(b)

结果




5、input()函数

input()输入的是字符串类型,即使括号中是数字,最终也为字符串类型

a = input('shuru   ')     将输入后的内容存到变量a中,且类型为str

user = input('ghj')

print(type(user))

结果

ghj
<class 'str'>



user = input(4555)

print(type(user))

结果

4555
<class 'str'>


可通过eval转换为整型

user = input('shuru')
print(type(user))
b=eval(user)
print(b)

print(type(b))

结果

shuru1231
<class 'str'>
1231
<class 'int'>







6、比较大小

这几个函数就是用来替换之前的cmp的,之前使用cmp的同胞们,咱们以后就换上面这些函数咯。
先简单说下这几个函数的意思吧。
lt(a,b) 相当于 a<b     从第一个数字或字母(ASCII)比大小 
le(a,b)相当于a<=b
eq(a,b)相当于a==b     字母完全一样,返回True,
ne(a,b)相当于a!=b
gt(a,b)相当于a>b
ge(a,b)相当于 a>=b
函数的返回值是布尔哦

import operator
a=operator.le(80, 80)
print(a)
a=operator.ge(80, 60)
print(a)







7、排序

函数 sort()用于列表中元素的排序,list.sort() 不会返回对象,会改变原有的list 
(这点与sorted()不同,sorted()函数会返回一个列表,而sort()函数是直接在原来的基础上修改,其次注意语法) 

list1=[1,2,33,4,43]
list1.sort()

print(list1)

结果

[1, 2, 4, 33, 43]


输入的为str

c=['3a','2b','1c']
c.sort(reverse=True)

print(c)

结果

['3a', '2b', '1c']


c=['a','b','c']
c.sort(reverse=True)

print(c)

结果

['c', 'b', 'a']



8、join函数

语法:  'sep'.join(seq)
参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串


#对序列进行操作(分别使用' '与':'作为分隔符)
  
>>> seq1 = ['hello','good','boy','doiido']
>>> print ' '.join(seq1)
hello good boy doiido
>>> print ':'.join(seq1)
hello:good:boy:doiido
  
  
#对字符串进行操作
  
>>> seq2 = "hello good boy doiido"
>>> print ':'.join(seq2)
h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o
  
  
#对元组进行操作
  
>>> seq3 = ('hello','good','boy','doiido')
>>> print ':'.join(seq3)
hello:good:boy:doiido
  
  
#对字典进行操作
  
>>> seq4 = {'hello':1,'good':2,'boy':3,'doiido':4}
>>> print ':'.join(seq4)
boy:good:doiido:hello
  
  
#合并目录
  
>>> import os
>>> os.path.join('/hello/','good/boy/','doiido')
'/hello/good/boy/doiido'








9、range函数

for i in range(1,5):

    print(i)

结果

1
2
3

4


for i in range(5):

    print(i)

结果

0
1
2
3

4








程序模块

冒泡排序

#起泡算法
def bubble_sort(lst):
    for i in range(1,len(lst)+1):
        for j in range(1,len(lst)+1-i):
            if lst[j-1]>lst[j]:
                lst[j-1],lst[j]=lst[j],lst[j-1]


l=[1,43,3432,54]
bubble_sort(l)

print(l)


运行结果

[1, 43, 54, 3432]



其实这题不用冒泡排序就可以做出来

代码如下:

import sys
N=input()
a=sys.stdin.readline()
b=a.strip()
numbers=b.split()    #将字符串变为字符串列表
#sort排序,reverse=True保证排成的list开头大的在前
numbers.sort(reverse=True)
ans=''.join(numbers)
print(ans)

























































猜你喜欢

转载自blog.csdn.net/qiurisiyu2016/article/details/80208505