python笔记5 - 字符串格式化表达式,while语句嵌套,for循环,break,continue,死循环

2017/9/29

字符串格式化表达式,while语句嵌套,for循环,break,continue,死循环

 

=====================================================================

技巧:

subl中按ctrl+shift+上(下)键,能够上下移动光标所在的行数据

=====================================================================

while语句嵌套:

while a > b:

    while b > c:

      ...

else:

 ...

实例:

i = 1

while i <= 10:

    j = 1

    while j < 10

        print("i=",i,"j=",j)

        j += 1

    i += 1

 

spyder3python的编译执行器)的使用:

f5 runfile 运行

console 控制台 相当于终端

绿色执行 蓝色调试执行

variable explorer 可观察变量的变化

=====================================================================

for循环语句:

for语句可以用来遍历序列或可迭代对象的每一个元素(遍历:从头到尾,可迭代:可以从头查到尾)

可迭代对象包括:

字符串 str

列表   list

元组   tuple

字典   dict

集合   set

固定集合frozenset

迭代器

 

for语句的语法:

  for 变量列表 in 可迭代对象:

      语句1

      ...

  else:

      语句2

      ...

说明:else子句部分可以省略

      语句1的执行次数与可迭代对象的元素个数有关

 

实例1:

s = "hello"

for ch in s:           #能够实现对字符串"hello"的遍历查询

    print("ch->>",ch)

else:

    print("for语句结束")

print("程序结束")

 

执行结果:

>>>

ch->> h

ch->> e

ch->> l

ch->> l

ch->> o

for语句结束

程序结束

 

实例2:

任意输入一个字符串,计算其中的‘a’的个数 并打印出来

str = input("请输入一个字符串:")

i=0

for ch in str:    

     if ch == 'a':

        i += 1

print(i)

 

总结:

能够实现对输入字符串的遍历查询,"for"语句的"in" 和 "if" 语句中的"in"返回值略微不同,前者返回遍历字符,后者返回"True"和"False"

 

range函数:生成可迭代整数数字序列,是个整数集合的对象,经常用在for循环中(比如对电话号码和计数的操作)

格式:见>>>help(range)

 

range(stop):

从零开始,每次生成一个整数,后加1操作,直到stop为止(不包括stop)

range(start,stop[,step])

start 开始

stop  结束(不包含stop)

step  步长(可以为负数,且可以省略)

例:

   range(3)  >>> 0 1 2

   range(5)  >>> 0 1 2 3 4

   range(1,8,2)   >>>1 3 5 7

   range(5,0,-1)  >>>5 4 3 2 1

   range(1,3)    >>>1 2

   range(4,0)    >>>空,没有数据,不是4 3 2 1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

实例1:

for x in range(10):

    print(x)

 

实例2:

for x in range(10):

    print("aaaaaaaaaaaaaaaaaaaa")

>>>aaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaa

 

------------------------------------

 

实例3:

打印1-10奇数

打印1-10偶数

print("奇数:",end=' ')

for x in range(1,11)

    if x % 2 == 1:

        print(x,sep=' ')

 

------------------------------------

 

实例4:打印1-100的奇数:

print("奇数:",end=' ')

for x in range(1,11):

    if x % 2 == 1:

        print(x,end=' ')

print()

注:                                

print(x,end=' ')

print()

 

------------------------------------

 

实例5:

打印100-1000之间的水仙花数(个位3方+十位3方+百位3方 = 原数)

例如: 153 370

 

(1)通过取整或求余数得到各个位置的数,再完成水仙花数的判断

for x in (100,1000):

    a = x // 100

    b = x // 10 % 10

    c = x  % 10

    if x = a**3+b**3+c**3:

        print(x)

 

(2)将整数转换成字符串以便于进行拆减,(数组化后

for i in range(100,1000)

    j = str(i)

    a = int(j[0])

    b = int(j[1])

    c = int(j[2])

    if i == a**3 + b**3 + c**3

        print(i)

 

(3)

for i in range(100,1000):

    m = 0

    for j in str(i):

        m += int(j)**3

    if i == m:

        print(i)

 

=====================================================================

break语句:用于循环语句(while,for)中,用来终止当前循环语句的执行

 

实例1:

i = 0

while i < 10:

    print(i)

    i = i + 1                 #这是一个动作语句,而不是判断语句,只有在判断语句中,子语句才会缩进进行一个判断和修改,实际上已经缩进在判断语句中

else:

    print("while循环结束")

print("程序结束")     

bug提示:若i自增缩进错误,将出现提示:IndentationError: unexpected indent

 

------------------------------------

 

实例2:

i = 0

while i < 10:

    break          #while语句结束,break是一个动作语句,缩进在判断语句中

    print(i)       #如果break放在这一行与print交换位置,则输出0,再打印程序结束

    i = i + 1

else:

    print("while循环结束")

print("程序结束")  #只输出“程序结束”break跳出最近的循环语句;

这里while和else合体构成一个完成的循环系统,所以break用于跳出这个完整的循环系统,不会对循环元素进行任何处理。

 

说明:

1)break语句通常和if语句组合使用;            

2) 当break语句执行后,此循环语句break之后的语句将不再执行;

3)break语句终止循环时,循环语句的else子句将不会执行;

4)break语句只能终止当前循环语句的执行,如有循环嵌套时,不会跳出外重循环(跳出子层,不跳出外层);

 

=====================================================================

continue语句:用于循环语句中,不再执行本次循环内continue之后的语句,重新开始一次新的循环(跳出子层以后,从下一个循环元素(实际是用本元素继续处理)继续处理)。

示例1:打印10以内的偶数       

for x in range(10):

    if x%2==1:

        continue          #奇数将会进行continue处理,即放弃这个循环元素的左右处理,开始下一个循环元素的处理

        print(x,end=' ')  #如果是奇数,就打印在一行,用空格间隔,但实际不会进行任何的数据处理

    else:

        print("打印结束")

print("程序结束")

>>>打印结束

打印结束

打印结束

打印结束

打印结束

程序结束

 

实例2:

x = 1

while x < 10:

    if x%2==1:

        continue

        print(x,end=' ')

        x +=1

    else:

        print("打印结束")

print("程序结束")

总结:这实际上是个死循环,它只有判断语句,由于x<10的原因,x会停在值2反复在else中进行"打印结束"打印操作,变成一个死循环

 

实例3(改进实例2):

x = 1

while x < 10:

    if x%2==1:

        x += 1      

        continue

        print(x,end=' ')

        x +=1

    else:

        x += 1              #添加该语句 完成x的自增数值循环,否则会停在某个值一直进行打印操作

        print("打印结束")

print("程序结束")

 

说明:

1)在while语句中执行continue语句,将会直接跳转到while语句真值表达式处重新判断循环条件(放弃本元素的处理,将该元素带到真值表达式前完成后面的操作,很容易出现死循环!!)

2)在for语句中执行continue语句,将会从可迭代对象中移向下一个元素再次进行循环;

 

=====================================================================

14.死循环:是指循环条件一直成立的循环;

           死循环通常用break语句来终止循环;

           死循环的else子句永远不会执行;

 

=====================================================================

练习:

1.打印1-20之间的整数,打印在一行显示每个数字之间用一个空格分隔:1 2 3 ...18 19 20

 

解:

for x in range(1,21):

    print(x,end = ' ')

print()   #将提示符转到下一行

 

---------------------------

 

2.打印1-20之间的整数,每一行打印五个,打印四行,如下:

1 2 3 4 5

6 7 8 9 10

11 12 13...

 ...

 

解:

for x in range(1,21):

    print(x,end = ' ')

    if x % 5 == 0:

        print('\n')  ##k可以简化为print()

 #如果不加引号,会将其认为是变量,进而输出变量的值;这里加了引号,表示输出字符,而又添加了\转义,变成了换行字符,类比空格字符

 

---------------------------

 

3.输入一个整数(代表树干的高度),打印如下一棵树:

  输入:2     行数   前后空格   星星

       *       1         1      1

      ***      2         0      3

       *    

       *

   输入:3

       *       1         2      1

      ***      2         1      3

     *****     3         0      5

       *

       *

       *

      ...

解:

n = input("请输入一个整数:")

n = int(n)

for x in range(1,n+1):           #这个x用来记录三角形的行数,即第x行;只是用于计数

    print(' '*(n-x),'*'*(x*2-1),' '*(n-x),end='\n')

for x in range(1,n+1):

    print(' '*(n-1),'*',end='\n')        #同上,记录树干的行数;只是用于计数

补充:输出部分可以不用 ,而使用 + 进行追加

 

---------------------------

 

4.输入unicode的起始编码和终止编码,打印此范围内所有的字符,如:

$./my_unicode.py

请输入起始值:48

请输入终止值:64

打印结果如下:

十进制编码        十六进制编码(hex())     文字 chr()

48                  0x30                     0

49                  0x31                     1

50                  0x32                     2

 

解1:

n1 = int(input("请输入起始值:"))

n2 = int(input("请输入终止值:"))

print("十进制编码",' '*3,"十六进制编码hex()",' '*3,"文字,chr()",end='\n')

for x in range(n1,n2+1):

    print(x,' '*(len('十进制编码')+6),hex(x),' '*(len('十六进制编码hex

()')+6),chr(x),end='\n')

注意:要注意print的位置

 

新解法:

begin = int(input("请输入起始值:"))

end = int(input("请输入终止值:"))

print("十进制编码  十六进制编码  文字")

for x in range(begin,end+1):

    print(str(x).center(11),hex(x).center(14),chr(x))

 

 

5.打印九九乘法表

解:

for x in range(1,10):

    for y in range(1,x+1):

        print(x,'*',y,'=',x*y,' ',sep='',end=' ')

    print('\n')

 

新解法:!!!!!!!!!!!!!

for row in range(1,10):  

    for col in range(1,row+1):

        print("%d*%d=%d" % (col,row,col*row),end=' ')  ##格式化输出

    print()           ##与上一行末尾的' '连用能够实现一行多元素输出后再转行         

 

 

 

6.打印前20个斐波那契数:1 1 2 3 5 8 13 21 34 55...

解:

a=1

b=1

print(a,b,sep=' ',end=' ')

for i in range(1,10):

    a=a+b

    print(a,end=' ')

    b=b+a

    print(b,end=' ')

print('\n')

 

补充:

print(a,b,sep=' ',end=' ')

可以写成:

print(a,end=' ')

print(b,end=' ')

 

解法1:

a = 1

b = 1

print(a,end=' ')

print(b,end=' ')

for i in range(18):

    n = a + b

    print(n,end=' ')

    a = b

    b = n

print()

 

解法2:

a = 1

b = 1

print(a,end=' ')

print(b,end=' ')

for i in range(18):

    print(a+b,end=' ')

    a , b = b , a + b   

print()

 

 

新的解法3-元组赋值-for:

a = 1

b = 1

for x in range(20):

    print(a,end = ' ')

    a,b = b,a+b

print()

 

 

解法4-列表-元组赋值:

a = 1

b = 1

L = []

for x in range(20):

    L.append(a)

    a,b = b,a+b

for x in L:

    print(x,end=' ')

print()

 

 

解法5-列表形式输出:

a = 1

b = 1

L = []

for x in range(20):

    L.append(a)

    a,b = b,a+b

print(L)

 

解法6-列表:

L = [1,1]

while len(L) < 20:

    L.append(L[-1]+L[-2])

print(L)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值