基础语法
见链接:
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.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)