前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第一章 python入门

第一章 python入门

作者头像
py3study
发布2020-01-17 12:21:17
5360
发布2020-01-17 12:21:17
举报
文章被收录于专栏:python3python3

阅读目录:

1.变量

   2.用户与程序交互

   3.基本数据类型

   4.格式化输出

   5.基本运算符

   6.流程控制之if....else

   7.流程控制之while循环

   8.流程控制之for循环

   9.开发工具IDE

   10.扩展阅读

   11:作业

1.变量                                                                                   

#编码
中文编码有万国码(Unicode)、utf8、GBK
其中utf8中文占三个字节,GBK中文占两个字节,一个字节等于八位
其中utf8可以跟Unicode相互转化
GBK可以转变成unicode Unicode做中文处理的时候可以与GBK转化
1.变量必须由字母数字下划线组成
2.数字不能作为开头
3.不能是python中的关键字,最好不要跟python中内置的东西重复

定义变量会有 id type value

注意:1.=比较的是vlaue
     2.is 比较的是id



强调:1.id相同,意味着type跟value必定相同
     2.value相同type不也相同,id可能不相同:
          x='juxianwen'
          y='juxianwen'
          id(x)
          4376607152
          id(y)
          4376607408
          x==y
          True
          x is y
          False
#1.在交互模式下
python实现int的时候由小数池。为了避免因为创建相同的值而重复申请内存空间所带来的效率问题,python解释器会再启动时创建出小数池,
范围是[-5,256],在该范围内的整数对象是全局解释器范围内被重复使用,永远不会被回收。(也就是说创建出来这个范围内相同的数字的id
相同)


#在pycharm中
在pycharm中会过大这个范围

常量

常量是指不变的量,程序员约定俗成的用变量名全大写表示常量

#ps 在c语言中有专门的常量定义语法,const、int、count,一旦定义为常量,更改便会报错

2.用户与程序交互                                                                                                                                                                                                                                                 

#在python3中
input:用户输入的任何值,都存成字符串类型



#在python2中
input:用户输入什么类型,就存什么类型
raw_input:等于python3的input

完成一个用户程序交互:1.提醒用户输入用户名跟密码

                                        2.获取用户名跟密码,如果用户名是:root  密码是:root 提示正确登录,否则登录失败

1 name=input('请输入用户名:')
2 pass_world=input('请输入用户密码:')
3 if name=='root' and pass_world=='root':
4     print('登录成功')
5 else:
6     print('登录失败')

输入用户名与密码

代码注释原则:

#1  不用全部都加注释,只是把自己觉得难理解的地方加上注释
 2. 注释可以用中文也可以用英文但是不要用拼音
 3.单行注释用# 多行注释用三对双引号"""  """

三  基本数据类型                                                                                                                                                                                                                                          

数字

#int 整型
定义:age=10  #age=int(10)
功能:用于标识 工资 身高 体重
#int整形了解部分
在32位机器上,整型的位数为32位,取值范围为 -2**32~2**32-1
在64位系统上,整型的位数为64位,取值范围为-2**63~2**63-1



#long长整型
跟c语言不同,python的长整型没有指定位宽,即:python没有限制长整型的数值大小,但由于机器内存有限制所有我们使用的长整型不能
无限大。

注意在python2.2以后,如果整型发生溢出,那么python自动将整数数据转化为长整数,所以现在长整数数据后面不加字母L也不会产生严重
后果。


注意自python3以后不再有长整型,全部是int
整型的功能
1.如何将其他形式转化为整型:
  若a='123'
  b=int(a) 这样子b=123 b就变成了一个整型

  num='0011'

   Int(num,base=2)base=2是指以二进制的形式输出0011,base=16,是以16进制的形式进行输出,所以这个程序就是将0011以二进制的 形式进行转化为十进制,所以输出以后为3.

2.__.bit_length()的功能

  这个的功能是这个数字用二进制表示至少需要几位

例如:age=10

      R=age.bit_length()

      Print(R)

字符串

#在python中,加了引号的字符就是字符串类型,python并没有字符类型。
定义:name='jxw' 相当于name=str(jxw)
用于标识:描述性内容,如姓名、性别等
len,join,for,索引切片 在别的数据结构中也能用
#那么单引号、双引号、多引号有什么区别呢?
单双引号没有什么区别,只有在下面这种情况你需要考虑单双号的配合。
msg=" I'am A"


多引号用于进行多行注释。
#字符串的加减
name='jxw'
age='18'
name+age  输出的是  jxw18 类型是字符串
name*5    输出的是 jxwjxwjxwjxwjxw 类型是字符串

注意1:字符串相加的效率不高
字符串1+字符串2,并不会在字符串1的基础上加上字符串2,而是申请一个全新的内存空间,存放字符串1和字符串2,所以占用了内存。
注意2:只能字符串加字符串,不能字符串加其他类型
#字符串的功能
1.字符串首字母大写
  text='alex'
  v=test.capitalize()
  print(v)  输出的是Alex
2.大写变成小写
  test.casefold() 这条命令是不管什么国家的语言都可以变成小写
  test.lower() 这个是只能英文字符大写转化为小写
3.填补功能
  test='alex'
  v=test.ceter(20)
  print(v)
  输出的是        alex       空格加alex总共为20位
  v=test.cete(20,'*')
  print(v)
  输出的是********alex********
4.计算字符串中某个字符的个数
  test='alexalex'
  v=test.count('e')
  计算e在alexalex中出现多少次
  v=test.count('ex',1,6)从第二个位置到第七个位置ex出现了多少次,但是不包括第二个位置跟第七个位置
5.判断以什么结尾,以什么开头
 test='alex'
 test.endwith('a',1,3)  看alex 在它的第二个位置到第四个位置是不是以a结尾的(包括第四个位置)
 test.startwith('a') 看alex是否以a开头
6.寻找目标所在位:
 test='alexalex'
 v=test.find('ex',1,4) 在第二个位置跟第五个位置寻找ex在哪个位置(不包括第五个位置),寻找到第一个ex就不往后找了
7.将字符串中的占位符替换成指定的值
test='I am {name},age{a}'
test.format(name='alex',a=19) 输出I am alex,age19
相当于test='I am {name},age{name}'.format(**{name:'alex',age:19})字典形式得加**
test='I am {0},age{1}'test.format('alex',19)   输出I am alex,age19  按照顺序来的先0后1
test='I am {name}'.format('name'='xa')
test.format_map({'name':'alex'})输出的是 I am alex 
test='{0},{0}'.format(1,2,3)输出的是11
test='i am {0[1]}'.format([1,2,3],[123])输出的[1,2,3]中的第二个元素 即 i am 2
test='{:s} {:d} {:f}'.format('sex',1,1.2) :s接受字符串 :d接受数字 :f接受浮点数 输出的是 sex 1 1.2
test='{:s} {:d}'.format(*['sex',12])  *['sex',12]是指的是输入整个列表 输出的是 sex 12

test='{:b}(输入二进制) {:o}(输入八进制) {:d}(输入整型) {:x}(16进制 输入小写abcd) {:X}(输入16进制 输入大写ABCD)
      {.%}(显示百分比默认显示小数点6位)'.format(15,1,15,15,15,15,8,2)
      


8.寻找字节在哪个位置

Text=’alexalex’

V=text.index(‘a’,4,5)

寻找a在哪个位置,如果没有4,5则默认从第零位开始,否则从第四位查找(包括第四位)到第五位结束(不包括第五位),

遇到一个a直接输出a的位置,这个a以后的则不查找,也就是说查找第一个a所在的位置。

9.判断字符串是否只包含字母与数字
test.isalnum 是的话是True不是的话Flase
10.断句换行功能
expandtabs(a)在a个字符之内遇到\t直接用空格填充到6
比如:s='uba\tk'
     a=s.expandtabs(6)输出的是uba  k总共位
断句,先将前6个拿出来无tab忽略再找6个,找到\t后补充到6个
11.判断是否全为字母跟汉字
text.isalpha() 全是输出True 反之输出Flase
12.判断是否全为数字
test.isdecimal() 这个甚至可以判断特殊的数字比如① 二
test.isdigit()只能判断普通的数字
12.判断是否为标识符 
标识符=有字母数字下划线组成(字母不开头)
test.isidentifier()是的话TRUE反之Flase
13.islower()判断是否为小写
14.判断是否可以打印
什么叫做可打印:如果存在\t,\n这些不可现实的字符就是不可打印
test.isprintable() 可打印true反之false
15.判断是否全为空格
test.isspace()判断是否全为空格
16.判断是否为标题
什么是标题:所有单词的首字母大写就是标题
test.istitle()
17.将字符串中的每个元素按照指定分隔符进行拼接
join(self,iterable)
test='你是风儿,我是沙'
t=' '
v=t.join(test) 输出 你 是 风 儿 , 我 是 沙
18.填充字符

右填充 ljust
v='alex'
a=v.ljust(5,'*') 输出的是*alex
左填充
v='alex'
a=v.rjust(5,'*')输出的是alex*
左填充0(只能填充0)
v='alex'
a=v.zfill(5)输出的是0alex
19.判断字符串是否全为大写
test.isupper()
20.消除指定字符串
消除空格
test.strip()消除两边空格
test.lstrip()消除左边空格
test.rstrip()消除右边空格
\n \t 也可以消除 
test='\nalex'
v=test.lstrip()这样输出的也是alex
消除指定的元素
test='xalex'
v=text.lstrip('x')  输出的是alex
21.转变字符串的特定内容
test='你是风儿我是沙'
text1='去你妈的风和沙'
v='你是风儿我是沙,缠缠绵绵去你家'
将v中test内容换成test1中的内容
m=v.maketrans('你是风儿我是沙','去你妈的风和沙')
new_v=tanslate(m)
22.分割
test='testastsd'
test.partition('s') 输出的是 'te','s','tastsd' 只分割第一个s
test.rpartition('s')从右起第一个s作为分割 'testast','s','d'
test.split('s') 'te','ta','t','d'
可以指定分割次数test.split('s',1)输出的是'te','tastsd'
从右开始分割 test.rsplit('s')
22.根据换行符进行分割
test='a\na\n'
v=test.splitlines()输出的['a','a']
v=test.splitlines(True)输出的是['a\n','a\n']
v=test.splitline(Flase)输出的是['a','a']
23.大小写转换
test='alex'
v=test.swapcase() 输出的是ALEX 
24.字符串的索引,切片,长度功能
test='alex'
索引 test[0] 输出的是a
切片 test[0:1] 输出范围 0=<x<1 
    test[0:-1]输出的范围是第一位到最后一位
长度 test='你是猪'
    len(test)在python3中输出的是三,在python2中输出的是9 因为utf8中一个汉字占三位
    li=['2','1','0']
    len(li)输出的是三
for zjw in test:
    print(zjw)
相当于:
index=0
while index <len(test):
    v=test[index]
    print(v)
    index=index+1
25.替换
test='alexalexalex'
test.replace('ex','bbb')输出的是albbbalexalex
test.replace('ex','bbb',2)输出的是albbbalbbbalex
26.创建连续的数字
v=range(100)
print(v) 输出的是range(100)
for i in v:
     print(i) 输出的是0到99
也可以设置步长
v=range(0,100,5)
for i in v:
    print(i)输出的是0 5 10 。。。。
#习题 将 文件索引打印出来
test=input('')#需要打印索引的内容
l=len(test)
r=range(0,l)
for k in r:
    print(k,test[k])

 列表

#在[]内用逗号分隔,可以存放n个任意类型的值 
定义:students=['1','2','3']
#students=list(['1','2','3'])
用于标识:存储多个值得情况,比如一个人的多个爱好
#存放多个学生的信息:姓名,年龄,爱好
student_info=[['egon',18,['play']],['alex',18,['play','sleep']]]
student_info[0][2],[0] 输出的是play
列表可以有索引、切片
列表可以进行for,while 自然也支持break contiune

链表:因为列表存储不是连续存的,就是在第一个位置里存放着第二个位置的坐标。正因为列表存储不连续,所以列表可以修改
     比如:列表第一个位置为20
          li[0]=120 第一个位置就由20变成120
1.删除,修改功能
del li[1] 将li的第二个位置删除掉
del li[2:6]删除li的 3,4,5,6位置的元素
li[1:3]=[120,90]第二位换成120,第三位换成90
2.列表中是否有这个元素
v=12 in li
print(v)如果12在li中输出的True 如果不在输出Flase
3.取列表的特定的值
li=[1,12,9,8,['1',['19',10]],'alex',True]
li[4][1][0] 输出的是19
4.字符串转化为列表的原理
s='1234'
list(s)
这个原理是
list=[]
for i in s:
    list=list.append(i)
li=[1,2,3]
str(li)输出的是'[1,2,3]'
5.末端插入
li=[1,2,3]
li.append(5)
print(li)输出的是[1,2,3,5]
5.清空列表
li.clear()
6.浅拷贝
li.copy
7.计算列表中元素出现了多少次
v=li.count(22)看列表li中22出现了多少次
8.扩展列表,参数为可迭代对象
li=[11,22,33,44,55]
li=extend([98,12])
print(li)  输出的是[11,22,33,44,55,98,12]
9.从左往右找值,找到第一个就不继续找下去了
li=[11,22,33,44,55]
v=li.index(22) #index(x,start,end)
10.在指定位置插入一个值
li=[11,22,33]
li.insert(0,99)
print(li)输出的是[99,11,22,33]
11.删除指定位置元素,并且可以获取到这个元素
li=[1,2,3]
v=li.pop()
print(v)输出的是3
v=li.pop(1)删除第二个位置的元素,并获取这个值赋值给v
12.删除指定元素
li.remove(22)删除从左到右第一个22
13.将列表进行翻转
li=[1,2,3]
li.reverse()
print(li)输出的是[3,2,1]
14.进行排列
li=[11,44,22,33,22]
li.sort
print(li) 输出的是[11,22,22,33,44]
li.sort(reverse=True)
print(li)输出的是[44,33,22,22,11]
#练习题
1.l=[1,2,3,4,5,6]
  正向步长:l[0:3:1] 输出的是[1,2,3]
  反向步长:l[2::-1]输出的是[3,2,1]
  列表翻转:l[::-1]输出的是[6,5,4,3,2,1]
2.用列表data=['alex',49,[1900,3,18]],分别取出列表中名字,年龄,出生的年,月,日赋值给不同的变量
  data[0]输出的是 alex
  data[1]输出的是 49
  data[2]输出的是 [1900,3,18]

元组

列表:有序、[]、可以增删
元组:li=(1,2)小括号,可以查看li[0](这里就已经证明元组是有序的),li[0:6],但是不可以修改跟删除,可迭代 for i in li: 
因为可以迭代所以 元组列表
     字符串可以相互转化。注意:元组的一级元素不可修改、删除、增加,但是二级元素确不一定不可以修改。
元组的join可以用
tu=('asdf','asdf')
v='_'join(tu)输出的是asdf_asdf
count计数
index获取指定元素在元组中的索引

 字典

字典的作用:可以存放多个任意类型的值,并且可以硬性规定值得映射关系。

#在{}内用逗号分隔,可以存放多个key,value的值,其中value可以是任意值,key只能是数字、字符串、布尔值,每一个值都有唯一一个
key对应,可以更为高效方便的取值。
注意:key重复时只能保留一个
     布尔值作为key时,True相当1,所以数字1跟True同时存在的时候只保留一个。False相当于数字0.
info={
     'name':'se',
     'hobbies':['play','sleep'],
     'company_info':{
          'name':'oldboy',
          'type':'edu'
          'emp_num':40
     }
  
}
print(info['company_info']['name']} 输出的是 oldboy
del infor('name') name:se 这个键值对就被删除了

注意:字典不可以被while循环,但是可以进行for循环。
for i in infor:  相当于 for i in infor.keys(): 默认输出的是key
for i in infor.values():  这个是只循环初values
for i,v in infor.items(): 这个是将key value 都循环出来。
v='v1' in dic.values() 判断v1在没在value中出现
字典的功能:
1.clear清空功能

2.copy复制功能

3.fromkeys(直接写类名)根据序列创建字典,并指定统一值。
v=dict.fromkeys(['k1',123,'99'])
print(v)输出的是{123:None,'k1':None,'999':None}
4.字典的取值功能


v=dic.get('k1')取到k1这个键对应的值,如果没有输出None



v=dic.get('k11',111)输出k11键对应的那个值,如果没有输出111

5.字典的删除功能
v=dic.pop('k1')删除k1对应的那对键值对
print(k1)输出k1那个键对应的那个值

v=dic.pop('k1',111)
print(v)如果字典中本来没有k1 这样就输出111
6.设置默认值
v=dic.setdefault('k1','123')如果k1存在则k1不设置成123,print(k1)将输出字典中的k1
如果k1不存在,那么将k1作为键123作为值放入字典中,print(dic['k1'])输出的是123
7.更新
dic.update({'k1':'1111','k2'=123}) 相当于 dic.(k1='1111',k2=123)
如果dic中k1已经存在,那么久覆盖掉,如果不存在更新上。

 布尔值

#布尔值 一个True 一个False
bool(a)将a转化为布尔值
#所有类型都自带布尔值
1.None,0,空 都为False
2.其余值都为True

重点

#可变类型:在id不变的情况下,value可变,则称为可变类型,如列表、字典。
#不可变类型:value一旦改变,id也得变,则成为不可变类型(id变,意味着创立新的内存空间)

集合

#作用:去重、关系运算
#集合的定义:
   1.集合可以包括多个元素,用逗号分割开
   2.每个元素必须是不可变类型(可hash,可作为字典key)
   3.没有重复元素
   4.无序
例:s=set('hello')
   print(s)输出的是{'h','e','l','o'}
   
   s=set(['alex','alex','sb'])
   print(s)输出的是{'alex','sb'}
#集合的功能
1.添加元素
s={1,2,3}
s.add('s')
print(s)输出的是{1,2,3,s}
2.清空功能
s.clear()
print(s) 输出的是set()
3.复制功能
s1=s.copy()
这个我相当于s1==s
4.删除功能
v=s.pop()这个是随机删除
v=s.remove(1)指定删除元素1,如果没有1,则会报错
v=s.discard(1)指定删除元素1,如果没有1也不会报错
5.交集
python_1=['lv','gh','gg']
linux_1=['lv','cnm','nmb']
python_and_linux=[]
for i in python_1:
    if i in linux_1:
        python_and_linux.append(i)
python_and_linux=set(python_and_linux)    
这段程序相当于 p_s=set(python_1)
            l_s=set(linus_1)
            print(p_s.intersection(l_s)) 相当于 print(p_s&l_s)
6.并集
print(p_s.union(l_s)) 相当于 print(p_s|l_s)
7.差集:p_s中减去P_s与l_s的交集
print(p_s.different(l_s))相当于print(p_s-l_s)
进行差集以后,p_s与l_s并没有改变
p_s=p_s-l_s 相当于 p_s.different.updata(l_S)  p_s就更新为 p_s-l_s
8.交叉补集:p_s并上l_s在减去p_s交上l_s
print(p_s.symmetric_difference(l_s)) 相当于 print(p_s^l_s)
9.判断s1,s2集合是否为空
print(s1.isdisjoint(s2))若是为空则输出True
10.子集,复集   若s1为s2的子集,那么s2为s1的复集
子集:print(s1.issubset(s2))如果是子集输出True
复集 :print(s2.issuperset(s1))如果 s2>=s1那么输出True
11.不可变集合:
s=forzenset('hello')
通过这个命令形成的集合不可增加也不可删除
有如下列表
l=[
{'name':'alex','age' :18,'sex'='male'}
{'name':'egon','age' :73,'sex'='male'}
{'name':'alex','age' :20,'sex'='female'}
{'name':'alex','age' :18,'sex'='male'}
{'name':'alex','age' :18,'sex'='male'}
],去重,得到新列表并且保留原来顺序。
a=[{'name': 'egon', 'age': 18, 'sex': 'male'},
    {'name': 'alex', 'age': 73, 'sex': 'male'},
    {'name': 'egon', 'age': 18, 'sex': 'female'},

    {'name': 'egon', 'age': 18, 'sex': 'male'},
    {'name': 'egon', 'age': 18, 'sex': 'male'},

   ]
b=[]


num=len(a)



while num>0:

    num=num-1
    v=a.pop()


    for i in a:
        if i['name']==v['name'] and i['age']==v['age'] and i['sex']==v['sex']:
            a.remove(i)#当a发生改变时直接跳出for 循环
    a.append(v)

print(a)

 数据类型总结                                                                                                                                                                                                                                                

按存储空间的占用分(从低到高)

数字
字符串
集合:无序,即无序存索引相关信息
元组:有序,需要存索引相关信息,不可变
列表:有序,需要存索引相关信息,可变,需要处理数据的增删改
字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改

四 格式化输出                                                                                                                                                                                     

程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式

    比如要求用户输入用户名和年龄,然后打印如下格式:

    My name is xxx,my age is xxx.

    很明显,用逗号进行字符串拼接,只能把用户输入的名字和年龄放到末尾,无法放到指定的xxx位置,而且数字也必须经过str(数字)的转换才能与字符串进行拼接。

    这就用到了占位符,如:%s、%d

#%s字符串占位符:可以接收字符串,也可接收数字 print('My name is %s,my age is %s' %('egon',18)) #%d数字占位符:只能接收数字 print('My name is %s,my age is %d' %('egon',18)) print('My name is %s,my age is %d' %('egon','18')) #报错

#接收用户输入,打印成指定格式 name=input('your name: ') age=input('your age: ') #用户输入18,会存成字符串18,无法传给%d

print('My name is %s,my age is %s' %(name,age))

#注意: #print('My name is %s,my age is %d' %(name,age)) #age为字符串类型,无法传给%d,所以会报错

浮点数(小数)的格式化:

tp1='percent %f'%99.975   这个%f 默认保留6位 所以输出的是percent99.975000

tp1='percent%..2f'%99.9765 这个保留两位小数 输出的是 percent99.97

tp1='percent%..2f%%'%99.222 这个%%是指输出% 输出的是percent99.22%

字典的形式格式化:

tp1='i am %(name)s age %(age)d '%{'name':'alex','age':19}输出的是 i am alex age 19

print中的sep分割:

print('root','x','0','0',sep=':')这个值得是以:分割 输出的是 root:x:0:0:

 五 基本运算符                                                                                                                                                                                     

 计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算

算数运算

    以下假设变量:a=10,b=20

比较运算

    以下假设变量:a=10,b=20

赋值运算

    以下假设变量:a=10,b=20

 逻辑运算

#三者的优先级从高到低分别是:not,or,and
>>> 3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3
False
#最好使用括号来区别优先级,其实意义与上面的一样
>>> (3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
False 

 身份运算

#is比较的是id
#而==比较的是值

 六控制流程之 if....else语句                                                                                                                                                                    

既然我们编程的目的是为了控制计算机能够像人脑一样工作,那么人脑能做什么,就需要程序中有相应的机制去模拟。人脑无非是数学运算和逻辑运算,对于数学运算在上一节我们已经说过了。对于逻辑运算,即人根据外部条件的变化而做出不同的反映,比如

# 如果:今天是Monday,那么:上班
# 如果:今天是Tuesday,那么:上班
# 如果:今天是Wednesday,那么:上班
# 如果:今天是Thursday,那么:上班
# 如果:今天是Friday,那么:上班
# 如果:今天是Saturday,那么:出去浪
# 如果:今天是Sunday,那么:出去浪


#方式一:
today=input('>>: ')
if today == 'Monday':
    print('上班')
elif today == 'Tuesday':
    print('上班')
elif today == 'Wednesday':
    print('上班')
elif today == 'Thursday':
    print('上班')
elif today == 'Friday':
    print('上班')
elif today == 'Saturday':
    print('出去浪')
elif today == 'Sunday':
    print('出去浪')
else:
    print('''必须输入其中一种:
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
    ''')

#方式二:
today=input('>>: ')
if today == 'Saturday' or today == 'Sunday':
    print('出去浪')

elif today == 'Monday' or today == 'Tuesday' or today == 'Wednesday' \
    or today == 'Thursday' or today == 'Friday':
    print('上班')

else:
    print('''必须输入其中一种:
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
    ''')


#方式三:
today=input('>>: ')
if today in ['Saturday','Sunday']:
    print('出去浪')
elif today in ['Monday','Tuesday','Wednesday','Thursday','Friday']:
    print('上班')
else:
    print('''必须输入其中一种:
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
    ''')

七 流程控制之while循环                                                                                                                                                                     

条件循环:while,语法如下

while 条件:    
    # 循环体
 
    # 如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件。。。
    # 如果条件为假,那么循环体不执行,循环终止
#打印0-10
count=0
while count <= 10:
    print('loop',count)
    count+=1

#打印0-10之间的偶数
count=0
while count <= 10:
    if count%2 == 0:
        print('loop',count)
    count+=1

#打印0-10之间的奇数
count=0
while count <= 10:
    if count%2 == 1:
        print('loop',count)
    count+=1

死循环

import time
num=0
while True:
    print('count',num)
    time.sleep(1)
    num+=1   

循环嵌套与tag

 tag=True 

  while tag:

    ......

    while tag:

      ........

      while tag:

        tag=False
#练习,要求如下:
    1 循环验证用户输入的用户名与密码
    2 认证通过后,运行用户重复执行命令
    3 当用户输入命令为quit时,则退出整个程序 
#实现一:
name='egon'
password='123'

while True:
    inp_name=input('用户名: ')
    inp_pwd=input('密码: ')
    if inp_name == name and inp_pwd == password:
        while True:
            cmd=input('>>: ')
            if not cmd:continue
            if cmd == 'quit':
                break
            print('run <%s>' %cmd)
    else:
        print('用户名或密码错误')
        continue
    break

#实现二:使用tag
name='egon'
password='123'

tag=True
while tag:
    inp_name=input('用户名: ')
    inp_pwd=input('密码: ')
    if inp_name == name and inp_pwd == password:
        while tag:
            cmd=input('>>: ')
            if not cmd:continue
            if cmd == 'quit':
                tag=False
                continue
            print('run <%s>' %cmd)
    else:
        print('用户名或密码错误')

continue  break

break 是直接结束所有循环 continue结束当前循环在会到本层循环重新开始循环
while 1==1:(break直接回到这里并且结束这里)

     while 1==1:(while 是结束循环回到这里并且继续执行循环)

         a=input('请输入')

         if  a=='a':

              contiune

         else:

              break

 while+else

#与其它语言else 一般只与if 搭配不同,在Python 中还有个while ...else 语句,while 后面的else 作用是指,当while 
循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句
count = 0
while count <= 5 :
    count += 1
    print("Loop",count)

else:
    print("循环正常执行完啦")
print("-----out of while loop ------")
输出
Loop 1
Loop 2
Loop 3
Loop 4
Loop 5
Loop 6
循环正常执行完啦
-----out of while loop ------

#如果执行过程中被break啦,就不会执行else的语句啦
count = 0
while count <= 5 :
    count += 1
    if count == 3:break
    print("Loop",count)

else:
    print("循环正常执行完啦")
print("-----out of while loop ------")
输出

Loop 1
Loop 2
-----out of while loop ------

 while循环练习题

#1. 使用while循环输出1 2 3 4 5 6 8 9 10 #2. 求1-100的所有数的和 #3. 输出 1-100 内的所有奇数 #4. 输出 1-100 内的所有偶数 #5. 求1-2+3-4+5 ... 99的所有数的和 #6. 用户登陆(三次机会重试) #7:猜年龄游戏 要求: 允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出 #8:猜年龄游戏升级版 要求: 允许用户最多尝试3次 每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序 如何猜对了,就直接退出

#题一 count=1 while count <= 10: if count == 7: count+=1 continue print(count) count+=1

count=1 while count <= 10: if count != 7: print(count) count+=1

#题目二 res=0 count=1 while count <= 100: res+=count count+=1 print(res)

#题目三 count=1 while count <= 100: if count%2 != 0: print(count) count+=1 #题目四 count=1 while count <= 100: if count%2 == 0: print(count) count+=1 #题目五 res=0 count=1 while count <= 5: if count%2 == 0: res-=count else: res+=count count+=1 print(res)

#题目六 count=0 while count < 3: name=input('请输入用户名:') password=input('请输入密码:') if name == 'egon' and password == '123': print('login success') break else: print('用户名或者密码错误') count+=1

#题目七 age_of_oldboy=73

count=0 while count < 3: guess=int(input('>>: ')) if guess == age_of_oldboy: print('you got it') break count+=1

#题目八 age_of_oldboy=73

count=0 while True: if count == 3: choice=input('继续(Y/N?)>>: ') if choice == 'Y' or choice == 'y': count=0 else: break

guess=int(input('>>: ')) if guess == age_of_oldboy: print('you got it') break count+=1

 for循环                                                                                                                                                                                               

for i in range(1,9):
    for t  in range(1,i):
        print(i)
        break
输出的是 2,3,4,5,6,7,8为什么从2开始输出,因为开始i是1所以变成for t in range(1,1)这个自动结束重新进行 for i in range(1,9)就从2开始
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.变量                                                                                   
    • 定义变量会有 id type value
      • 常量
        • 2.用户与程序交互                                                                                                                                                                                                                                                 
          • 代码注释原则:
            • 三  基本数据类型                                                                                                                                                                                                                                          
              •  列表
                • 元组
                •  字典
                •  布尔值
                • 重点
                • 集合
                •  数据类型总结                                                                                                                                                                                                                                                
              • 四 格式化输出                                                                                                                                                                                     
                •  五 基本运算符                                                                                                                                                                                     
                  •  六控制流程之 if....else语句                                                                                                                                                                    
                    • 七 流程控制之while循环                                                                                                                                                                     
                      • continue  break
                        •  for循环                                                                                                                                                                                               
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档