Python基础学习笔记(2)

循环

while
while 条件:
    条件满足时执行  

[root@lUsmwg108555 python]# cat while 
#!/root/.pyenv/shims/python3

#while1<2:
#	print("我喜欢你...")

#如果不确定需要重复多少次,那么就找一个永远满足的条件,比如1<2或其他条件
#但从一个有经验的开发者来看的话,如果需要一个永远成立的条件,一般写True

#while True:
#    print("我喜欢你....")
i=1
while i<=10:
    print("我喜欢你...")
    i +=1

[root@lUsmwg108555 python]#./while
我喜欢你...
我喜欢你...
我喜欢你...
我喜欢你...
我喜欢你...
我喜欢你...
我喜欢你...
我喜欢你...
我喜欢你...
我喜欢你...
[root@lUsmwg108555 python]# 

输出1-100的偶数:

[root@lUsmwg108555 python]# cat 99 
#!/root/.pyenv/shims/python3
i=0
while (i<=100):
    if i%2==0:
            print(i)
    i += 1
    
[root@lUsmwg108555 python]# 

while嵌套应用:

案例 1
[root@lUsmwg108555 python]# cat test
#!/root/.pyenv/shims/python3
i=1
while i<5:
    print("* "*i,end='')
    print("")
    i+=1
while i>0:
    print("* "*i,end='')
    print("")
    i-=1
[root@lUsmwg108555 python]# ./test
*  
* *  
* * *  
* * * *  
* * * * * 
* * * * 
* * * 
* * 
* 
[root@lUsmwg108555 python]#
案例 2
[root@lUsmwg108555 python]# cat 99 
#!/root/.pyenv/shims/python3
i=1
while i<=9:
    f=1
    while f<=i:
	    sum=i*f
	    print("%s*%s=%s"%(f,i,sum),end="	")
	    f+=1
    print("")
i+=1

[root@lUsmwg108555 python]# ./99
1*1=1	
1*2=2	2*2=4	
1*3=3	2*3=6	3*3=9	
1*4=4	2*4=8	3*4=12	4*4=16	
1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	
1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	
1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	
1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	
1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81	
[root@lUsmwg108555 python]#

循环控制:break 和 countiue

break
[root@lUsmwg108555 python]# cat break 
#!/root/.pyenv/shims/python3
i=1
while i<10:
    print("* "*10)
    if i==5:
	    break
    print("i=%d"%i)
    i+=1 
[root@lUsmwg108555 python]# ./break 
* * * * * * * * * * 
i=1
* * * * * * * * * * 
i=2
* * * * * * * * * * 
i=3
* * * * * * * * * * 
i=4
* * * * * * * * * * 
[root@lUsmwg108555 python]#
continue
[root@lUsmwg108555 python]# cat continue 
#!/root/.pyenv/shims/python3
i=1
while i<10:
    i+=1
    print("* "*10)
    if i==5:
    	continue
    print("i=%d"%i)

[root@lUsmwg108555 python]# ./continue 
* * * * * * * * * * 
i=2
* * * * * * * * * * 
i=3
* * * * * * * * * * 
i=4
* * * * * * * * * * 
* * * * * * * * * * 
i=6
* * * * * * * * * * 
i=7
* * * * * * * * * * 
i=8
* * * * * * * * * * 
i=9
* * * * * * * * * * 
i=10
[root@lUsmwg108555 python]# 

for循环

for 临时变量 in 列表或者字符串等:
    循环满足条件时执行的代码
else:
    循环不满足条件是执行的代码

[root@lUsmwg108555 python]# cat for 
#!/root/.pyenv/shims/python3
name="Mr.wang"
for tmp in name:
    print(tmp)

[root@lUsmwg108555 python]# ./for 
M
r
.
w
a
n
g
[root@lUsmwg108555 python]# 

下标索引和切片

下标

所谓 "下标" 就是编号,比如ofo上的编号,通过这个编号可以定位到哪台车
(python的下标从0开始)

[root@lUsmwg108555 python]# cat while-1 
#!/root/.pyenv/shims/python3
name="Mr.wang"
i=0
while i<7:
    print(name[i])
    i+=1
[root@lUsmwg108555 python]# ./while-1 
M
r
.
w
a
n
g
[root@lUsmwg108555 python]# 
切片

切片的语法:[起始:结束:步长]
注意:选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。

>>> name="Mr.wang"
>>> name
'Mr.wang'
>>> len(name)
7
>>> name[0:7]
'Mr.wang'
>>> name[0:6:2]
'M.a'
>>> 

>>> name[:]
'Mr.wang'
>>> name[::]
'Mr.wang'
>>> name[:::]
File "<stdin>", line 1
name[:::]
       ^
SyntaxError: invalid syntax
>>> 

切片取反

>>> name="abcdef"
>>> name[0::]
'abcdef'
>>> name[::-1]
'fedcba'
>>> 

字符串

如有字符串 mystr="Hello world my python",以下是常用的操作

find

检测str是否包含在mystr中,如果是返回开始的索引值,否则返回-1


mystr.find(str,start=0,end=len(mystr))


>>> mystr="hello world my python"
>>> len(mystr)
21
>>> mystr.find("python")
15
>>> mystr.find("fsf")
-1
>>> mystr[:15]
'hello world my '
>>> mystr[15:]
'python'
>>> 
index

跟find()方法一样,只不过如果str不在mystr中会报一个异常

>>> mystr.index("python")
15
>>> mystr.index("hhh")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
>>> 
rfind 和 rindex

即从右边开始查找,比如取后缀

>>> fileName.find(".")
2
>>> fileName[2:]
'.wang.exe'
>>> fileName.rfind(".")
7
>>> fileName[7:]
'.exe'
>>> 
count

返回 str 在 start 和 end 之间,在myster里面出现的次数


mystr.count(str,start=0,end=len(mystr))


>>> mystr
'hello world my python'
>>> mystr.count("h")
2
>>> len(mystr)
21
>>> mystr.count("h",3,21)
1
>>> 
replace

把 mystr 中的 str1 替换成 str2 ,如果count指定,则替换不吃超过count次


mystr.replace(str1,str2, mystr.count(str1))


没有重新赋值,该类操作仅打印出来不改变原来的赋值

>>> name
'python is one of the best language in the world'
>>> name.replace("o","O")
'pythOn is One Of the best language in the wOrld'
>>> name.replace("o","O",1)
'pythOn is one of the best language in the world'
>>> name
'python is one of the best language in the world'
split

以 str 为分隔符切片 mystr,如果 maxsplit 有指定值,则仅分割 maxsplit 个子字符串


mystr.split(str=" ",2)


>>> name
'python is one of the best language in the world'
>>> name.split(" ",2)
['python', 'is', 'one of the best language in the world']
>>> name.split("of")
['python is one ', ' the best language in the world']
>>> name.split(" ")
['python', 'is', 'one', 'of', 'the', 'best', 'language', 'in', 'the', 'world']
>>> name.split()
['python', 'is', 'one', 'of', 'the', 'best', 'language', 'in', 'the', 'world']
>>> 
capitalize

把字符串的第一个字符大写


mystr.capitalize()


>>> mystr
'hello world my python'
>>> mystr.ca
mystr.capitalize(  mystr.casefold(    
>>> mystr.capitalize()
'Hello world my python'
>>> 
title

把字符串的每个单词首字母大写

>>> name
'python is one of the best language in the world'
>>> name.title()
'Python Is One Of The Best Language In The World'
>>> 
starswith

检查字符串是否以xxx开头,是则返回 True,否则返回 False.
mystr.starswith(xxx)

>>> mystr.startswith("hello")
True
>>> mystr.startswith("Hello")
False
>>> 
endswith

检查字符串是否以xxx结尾,是则返回 True,否则返回 False.

>>> mystr
'hello world my python'
>>> mystr.endswith("on")
True
>>> mystr.endswith("th")
False
>>> 
lower

转换 mystr 中的所有大写字符为小写

>>> mystr
'Hello wOrld my PythOn'
>>> mystr.lower()
'hello world my python'
>>> 
upper

转换mystr中的所有字符为大写

>>> mystr
'Hello wOrld my PythOn'
>>> mystr.upper()
'HELLO WORLD MY PYTHON'
>>>
ljust

返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串


mystr.ljust(width)


>>> mystr
'Hello wOrld my PythOn'
>>> mystr.ljust(10)
'Hello wOrld my PythOn'
>>> mystr="hehe"
>>> mystr.ljust(10)
'hehe      '
>>> 
rjust

返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串


mystr.rjust(width)


>>> mystr="hehe"
>>> mystr.ljust(10)
'hehe      '
>>> mystr.rjust(10)
'      hehe'
>>> 
center

返回一个原字符串居中,并使用空格填充至长度 width 的新字符串


mystr.center(width)


>>> name
'python is one of the best language in the world'
>>> name.center(60)
'      python is one of the best language in the world       '
>>> 
lstrip

删除 mystr 左边的空白字符


mystr.lstrip()


>>> mystr="             Hello World"
>>> mystr
'\t\tHello World'
>>> mystr.lstrip()
'Hello World'
>>> 
rstrip

删除 mystr 字符串末尾的空白字符


mystr.rstrip()


>>> mystr="Hello World   "
>>> mystr
'Hello World   '
>>> mystr.rstrip()
'Hello World'
>>> 
strip

删除 mystr 字符串两端的空白字符

>>> a = "\n\t Hello World \t\n"
>>> a
'\n\t Hello World \t\n'
>>> a.strip()
'Hello World'
>>> 
partition

把 mystr 以 str 分割成三部分,str前,str 和 str后


mystr.partition(str)


>>> name.partition("the")
('python is one of ', 'the', ' best language in the world')
>>> name.rpartition("the")
('python is one of the best language in ', 'the', ' world') 
>>> name.split("the")
['python is one of ', ' best language in ', ' world']
>>> 

其中 (...)表示元组 [...] 表示列表

splitlines

按照行分隔,返回一个包含各行作为元素的列表


mystr.splitlines()


>>> mystr="hello\nWorld"
>>> mystr
'hello\nWorld'
>>> print(mystr)
hello
World
>>> mystr.splitlines()
['hello', 'World']
>>> 
isalpha

如果 mystr 所有字符都是字母 则返回True,否则返回Flase


mystr.isalpha()


>>> mystr="Hello World"
>>> mystr.isalpha()
False
>>> mystr="Hello"
>>> mystr.isalpha()
True
>>> 
isdigit

如果 mystr 只包含纯数字则返回True,否则返回False


mystr.isdigit()


>>> UserName="123"
>>> UserName.isdigit()
True
>>> UserName="123abc"
>>> UserName.isdigit()
False
>>> 
isalnum

如果 mystr 所有字符都是字母或数字则返回True,否则返回False.

>>> UserName.isalnum()
True
>>> UserName
'123abc'
>>> UserName="asdf 123123"
>>> UserName
'asdf 123123'
>>> UserName.isalnum()
False
>>> 
isspace

如果 mystr 中只包含空格,则返回True,否则返回False.

>>> mystr="abc123"
>>> mystr.isspace()
False
>>> mystr="abc123 "
>>> mystr.isspace()
False
>>> mystr=""
>>> mystr.isspace()
False
>>> mystr=" "
>>> mystr.isspace()
True
>>> 
join

mystr 中每个字符后面插入 str ,构造出一个新的字符串

>>> a=" "
>>> mytest=["aaa","bbb","ccc"]
>>> a.join(my
mystr   mytest  
>>> a.join(mytest)
'aaa bbb ccc'
>>> 

(面试题)给定一个字符串str,返回使用空格或者'\t'分割后的倒数第二个子串

>>> mytest="aa hello world    fsf  \t  ddd  \t "
>>> mytest.split()
['aa', 'hello', 'world', 'fsf', 'ddd']
>>> 
comments powered by Disqus