二:python核心知识点

循环

python的两种循环 for...in...& while

for i in ... 遍历列表list、元组tuple、字符串str

依次把list或tuple中的每个元素迭代出来,看例子

>>> s=['a',2,3,4,5,6]
>>> type(s)
<class 'list'>
>>> for in in s:
  File "<stdin>", line 1
    for in in s:
         ^
SyntaxError: invalid syntax
>>> for i in s:
...     print(i)
...
a
2
3
4
5
6

>>> s=('miki','lili','tom')
>>> for i in s:
...     print(i)
...
miki
lili
tom

 

range()函数

>>> for i in range(10):
...     print(i)
...
0
1
2
3
4
5
6
7
8
9

 

>>> for i in range(1,10,2):
...     print(i)
...
1
3
5
7
9

 

>>> s="abcdefg"
>>> type(s)
<class 'str'>
>>> for i in s:
...     print(i)
...
a
b
c
d
e
f
g

>>> for i in range(len(s)):
...     print("当前位置是:%s,当前值是:%s" %(i,s[i]))
...
当前位置是:0,当前值是:a
当前位置是:1,当前值是:b
当前位置是:2,当前值是:c
当前位置是:3,当前值是:d
当前位置是:4,当前值是:e
当前位置是:5,当前值是:f
当前位置是:6,当前值是:g

练习:找出字符串s="abcclonhcjjsxccsdc"中字母为C的位置

#算法 1、用for基于坐标位置遍历s字符串的每一个字母

           2、在循环的时候,用if判断当前的字母是否为C,如果是,我们就打印一下坐标位置

>>> s="abcclonhcjjsxccsdc"
>>> for i in range(len(s)):
...     if s[i]=='c':
...         print(i)
...
2
3
8
13
14
17

编程思想:

遍历一个对象,然后在循环的时候对取出来的值进行判断,然后做一些事情

for ... in ... :

    if ... :

         do something

break & continue

break 会将循环体结束掉

continue 会将本次循环结束掉,循环体内部的代码会被短路掉,剩余的循环还会依旧执行

实例:

>>> for i in range(10):
...     if i==5:    #i=0,不执行break,执行print(0),知道i=5的时候,执行break,结束掉循环,不执行print(5)
...         break
...     print(i)
...
0
1
2
3
4

>>> for i in range(10):
...     if i==2 or i==8:   #当i等于2或8的时候,执行continue,print(i)被短路,继续执行下一次循环
...         continue
...     print(i)     #被短路掉
...
0
1
3
4
5
6
7
9

while

#用for能实现,就不用while,因为while容易发生死循环

死循环,实例:

a=1
while a>0:
    print(i)

正常使用,实例:

>>> a=0
>>> while a<=5:
...     print(a)
...     a=a+1
...
0
1
2
3
4
5

练习:求10以内奇数的和

#算法:1、用for循环遍历range(1,11,2)奇数

             2、在循环的时候,把奇数进行累加

>>> sum=0
>>> for i in range(1,11,2):
...     sum=sum+i
...
>>> print(sum)
25

增加调试语句

>>> sum=0
>>> for i in range(1,11,2):
...     print("当前值是:%s" %i)
...     sum=sum+i
...     print("当前的sum是:%s" %sum)
...
当前值是:1
当前的sum是:1
当前值是:3
当前的sum是:4
当前值是:5
当前的sum是:9
当前值是:7
当前的sum是:16
当前值是:9
当前的sum是:25

函数

>>> def count_odd_sum(num):
...     sum=0
...     for i in range(1,num,2):
...         sum=sum+i
...     return sum
...
>>> count_odd_sum(10)
25
>>> count_odd_sum(100)
2500
>>> count_odd_sum(1000)
250000

#同样的代码需要重复编写时,就要考虑把代码封装成函数

list&tuple&dict

容器:装多个元素

list:列表----多个元素,里面的元素可以修改

tuple:元组----多个元素,里面的元素不可以修改

dict:字典---多个元素,但是结构不一样,key:value的形式

list          #支持增删改查

>>> li=[1,2,3,'a','b','c']
>>> type(li)
<class 'list'>
>>> li.append('d')   #增
>>> li
[1, 2, 3, 'a', 'b', 'c', 'd']
>>> li.insert(1,'pop')   #增,指定位置插入
>>> li
[1, 'pop', 2, 3, 'a', 'b', 'c', 'd']
>>> del li[1]          #删
>>> li
[1, 2, 3, 'a', 'b', 'c', 'd']
>>> li[0]='hello'   #改
>>> li           #查
['hello', 2, 3, 'a', 'b', 'c', 'd']
>>> li[1]          #查
2
>>> for i in li:          #查
...     print(i)
...
hello
2
3
a
b
c
d
>>> for i in range(len(li)):        #查
...     print(li[i])
...
hello
2
3
a
b
c
d

>>> li.remove('hello')       #移除
>>> li
[2, 3, 'a', 'b', 'c', 'd']

tuple   #不支持增删改,可以查

>>> def fun():
...     return 1,2
...
>>> fun()
(1, 2)
>>> type(fun())
<class 'tuple'>

#你不希望别人随便修改你的代码,就是用元组!

>>> t=('a','b',2,3,)
>>> type(t)
<class 'tuple'>
>>> t[0]=3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment       #元组内的元素不能修改

>>> for i in t:
...     print(i)
...
a
b
2
3
>>> for i in range(len(t)):
...     print(t[i])
...
a
b
2
3

dict   #增删改查,都是基于key,不是基于坐标位置

>>> d={}
>>> type(d)
<class 'dict'>
>>> d[1]='hello'    #增
>>> d
{1: 'hello'}
>>> d[2]=2  #增
>>> d
{1: 'hello', 2: 2}
>>> del d[2]   #删
>>> d
{1: 'hello'}
>>> d[1]='sunny'  #改
>>> d
{1: 'sunny'}
>>> d[0]   #查,不能基于坐标位置查询
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 0
>>> d[1]
'sunny'
>>> d[2]='today'
>>> d[3]='I'
>>> d[4]='like'
>>> d
{1: 'sunny', 2: 'today', 3: 'I', 4: 'like'}
>>> for i in d.keys():      #查,查所有的key
...     print(i)
...
1
2
3
4
>>> for i in d.values():  #查,查所有的value
...     print(i)
...
sunny
today
I
like
>>> for k,v in d.items():  #查,查所有的key &value
...     print("%s=%s" %(k,v))
...
1=sunny
2=today
3=I
4=like

 

练习题

#反转整数的数字

'''
是一个数字
正数:123---》321
0---》0
负数 -123--->-321

反转:切片可以通过字符串反转,但是现在类型是数字,问题:数字可以变成字符串?
str(123)

'''


def reverse_number(n):
if not isinstance(n,int):#如果不是整数,则返回一个None
return None
if n>0: #判断是正数的情况
s=str(n) #转换为字符串
s=s[::-1]#实现数字的反转
result = int(s) #将字符串类型转换为整数
elif n==0:
return 0
else:
s=abs(n)
s=str(s) #转换为字符串
s=s[::-1]#实现数字的反转
result =-1* int(s) #将字符串类型转换为整数

return result


#经验分享:写一部分代码,就执行一次,方便定位问题。

a=reverse_number(123)
print(a)
print(type(a))

a=reverse_number(0)
print(a)
print(type(a))

a=reverse_number(-123)
print(a)
print(type(a))

 

#统计一句话中单词的数量

'''
#统计一句话中单词的个数
I am a girl,I hope my family is happy!
遇到一个空格,就是一个单词
但是这里还有符号,无空格的情况,所以就需要把非单词的符号转换成空格
split 遇到空白就切割
'''

def count_words(s):
    new_s=' '
    for i in s:
        if (i>='a' and i<='z') or (i>='A' and i<='Z'):
            new_s+=i
        else:
            new_s+=' '
    return new_s.split()

s='I am a girl,I hope my family is happy!'
word_list=count_words(s)
print(len(word_list))


sentence = "I am a good boy!You too!"
print(count_words(sentence))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值