python学习_循环结构 and 类型判断

版权声明:个人原创,所属@jerry 本人 https://blog.csdn.net/qq_42938842/article/details/82531050
# 循环结构

### 循环结构(while)

- 格式

  ```python
  while 表达式:
    语句块
  ```

  > 执行流程:当程序执行到while语句时,首先判断表达式的真假。若表达式的值为真,则执行缩进的语句块,然后返回while,继续判断表达式的真假,直到表达式的值为假;若表达式的值为假,则直接跳过语句块,执行后面的代码。

- 说明:

  - 表达式:也叫循环条件
  - 语句块:也叫循环体
  - 死循环:循环条件一直成立
  - break:跳出循环
  - continue:结束本次循环,进入下次循环
  - else:缩进的语句块,在循环正常退出时执行,break退出时不执行

### 循环结构(for-in)

- 说明:for-in也是一种循环,经常用于遍历可迭代的对象,如:字符串、列表、元组、字典等

- 格式

  ```python
  for x in y:
    语句块
  ```

  > 执行流程:x依次表示y中的一个元素,遍历结束循环就结束了。

### 列表生成式

- 可迭代对象:可以迭代遍历的对象,如:列表、元组、字典

- range函数

  ```python
  # 一个对象,保存了产生连续整数的算法
  # 可以节约空间
  # print(range(10))
  # 指定区间,默认其实值为0
  print(range(2, 10))

  # 可以遍历
  for i in range(10):
      print(i)

  # 可以转换成列表
  print(list(range(10)))
  ```

- 列表生成式

  ```python
  # 列表生成式:快速生成列表
  # print([i for i in range(1, 11)])
  # print([i*2 for i in range(1, 11)])
  # print([i*i for i in range(1, 11)])
  # print([str(i) for i in range(1, 11)])
  print([i for i in range(1, 11) if i % 2 == 0])
  ```


### 循环嵌套

- 循环能否嵌套?

  - 答:能

- 循环嵌套示例

  ```python
  n = int(input('请输入一个整数:'))

  for i in range(n):
      for j in range(i+1):
          print(j+1, end=' ')
      print()
  ```

  > 练习:使用while实现上面的功能
  >
  > ```python
  > #1.使用while实现输入一个数,输出1  12  123  ....
  > n = int(input('请输入一个整数:'))
  > i = 1
  > while i<= n:
  >     i +=1
  >     print([s for s in range(1, i)])
  > ```
  >
  > ​

- 列表元素排序

  - 冒泡排序

  ```python
  lt = [1, 5, 7, 3, 2]
  # 冒泡排序:从小到大
  # 第一轮:1 5 3 2 7
  # 第二轮:1 3 2 5 7

  n = len(lt)

  # 外层循环控制比较多少轮
  for i in range(n-1):
      # 内层循环控制元素的比较
      for j in range(n-i-1):
          if lt[j] > lt[j+1]:
              # 通用交换元素
              # temp = lt[j]
              # lt[j] = lt[j+1]
              # lt[j+1] = temp
              # python特有的
              lt[j], lt[j+1] = lt[j+1], lt[j]
  print(lt)
  ```

  - 选择排序

  ```
  思想:先取出第一个元素,然后依次与后面所有的元素比较,不合适,发生交换。
  示例:lt = [3, 5, 2, 8, 6, 4]
    第一轮:2, 5, 3, 8, 6, 4
    第二轮:235, 8, 6, 4
    第三轮:23, 4, 8, 6, 5
  ```

  > 练习:实现选择排序算法
  >
  > ```python
  > #先取第一个元素,然后依次与后面的所有的元素比较,不合适,发生交换
  > lt = [8,5,6,7,2,1,3]
  > n = len(lt)
  > for  i in range(0,n-1):
  >     for j in range(i+1,n):
  >         if lt[i] > lt[j]:
  >          lt[i],lt[j] =lt[j], lt[i]
  > print(lt)
  > ```
  >
  > ​

### 字符串操作

- 拼接与切割

  ```python
  s = 'I  love you more than I can say'
  # 按照指定的内容进行切割, 返回一个列表
  # sep:指定按照什么内容进行切割
  # maxsplit:指定切割次数
  # ret = s.split(' ', maxsplit=1)
  # ret = s.split()
  # 从右边开始切割
  ret = s.rsplit(' ', maxsplit=1)
  print(ret)

  s = 'Hello\nworld'
  # 安照换行进行切割
  print(s.splitlines())

  s = 'I love you more than I can say'
  ret = s.split()
  # 字符串的拼接
  s2 = '*'.join(ret)
  print(s2)
  ```

- 查找统计判断

  ```python
  s = 'Hi buddy, if you have something to say, than say; if you have nothing to say, than go!'

  # 子串查找,找到返回首次出现的位置(下标),找不到返回-1
  # ret = s.find('good')
  # 从后面开始查找
  # ret = s.rfind('if')
  # 统计次数
  # ret = s.count('if')

  # 判断是否以指定内容开头
  # ret = s.startswith('Hi')

  # 判断是否以指定内容结束
  ret = s.endswith('go')

  print(ret)
  ```

- 转换及替换

  ```python
  s = 'hello world!'

  # 转换为大写
  print(s.upper())

  # 转换为小写
  print(s.lower())

  # 大小写转换
  print(s.swapcase())

  # 首字母大写
  print(s.capitalize())

  # 每个单词首字母大写
  print(s.title())

  # 用指定的新内容替换就内容,不用写count,直接写数字
  print(s.replace('l', 'L'))
  ```

- 类型判断

  ```python
  s = 'Hello'

  # 是否是全大写
  print(s.isupper())

  # 是否是全小写
  print(s.islower())

  # 是否每个单词只有首字母大写
  print(s.istitle())

  # s = '123'
  # 是否是全数字
  print(s.isdecimal())

  # 是否全是字母
  print(s.isalpha())

  s = '123'
  # 是否全是数字或字母
  print(s.isalnum())
  ```

### 练习

- 计算1~100之间所有整数的和

- ```python
  #计算1~100之间所有整数的和
  i = 1
  sum = 0
  while i<=100:
      sum +=i
      i +=1
  print('1+2+3+...+100=',sum)
  #
  i = 0
  lt =[]
  while i <=100:
      lt.append(i)
      i+=1
  print(sum(lt))
  ```

  ​

- 打印字符A~Z

- ```python
  #2.打印字符A-Z
  a = 65
  b =90
  for i in range(a,b+1):
      print(chr(i))
  ```

  ​

- 循环输入10个字符,大写转小写,小写转大写,其它字符不变,然后输出

- ```python
  #3.循环输入10个字符,大写转小写,小写转大写,其它字符不变,然后输出.
  lt = 'hello WorLd!'
  i = 0
  a = len(lt)
  while i<a:
      b = lt[i]
      if b.islower():
          print(b.upper())
      else:
          print(b.lower())
      i +=1
  ```

  ​

- 将12345转换为54321

- ```python
  #当a不为零的时候,循环条件为true,执行语句块
  while a :
     #对a求余数,第一次循环则把5求出来
     last = a%10
     #对a求余后取整,保证下一位在下一个循环被取出
     a=a//10
      #  a , last = divmod(a,10)
     #ret这个变量,第一次将五放在各位,第二次放在十位,依次递增。
     ret = ret*10 + last

  #打印ret
  print(ret)
  ```

  ​

- 将12345转换为'12345',不要使用str

- ```python
  #5.将12345转换为'12345',不要使用str
  a = 12345
  b = '%d' % a
  print(b, type(b))
  ```

  将‘12345’转化成54321

  ```python
  #将’12345‘转换成 54321
  a = '12345'
  j = 0
  set = 0
  for i in a:
      j = j*10 + (ord(i)-ord('0'))
  #print(j)
  while j :
      j , last = divmod(j,10)
      set = last + set * 10
  print(set)
  ```

  ​

- 将'12345'转换为12345,不要使用int

- ```python
  #6.将'12345'转换为12345,不要使用int
  s = "12345"
  a = 0
  for x in s :
     a = a*10 +( ord(x)-ord("0"))
  print(a)
  ```

- 遍历列表,打印:`我叫name,今年age岁,家住dizhi,电话phone`

- ```python
  #7.遍历列表,打印:我叫name,今年age岁,家住dizhi,电话phone
  lt = [
    {'name':'小王', 'age':18, 'info':[('phone', '123'), ('dizhi', '广州')]},
      {'name':'小芳', 'age':19, 'info':[('phone', '789'), ('dizhi', '深圳')]},
      {'name':'小杜', 'age':22, 'info':[('phone', '567'), ('dizhi', '北京')]},
      {'name':'小孟', 'age':28, 'info':[('phone', '000'), ('dizhi', '上海')]},
      {'name':'小乔', 'age':26, 'info':[('phone', '111'), ('dizhi', '河南')]},
  ]
  for j in range(len(lt)):
      print('我叫{},今年{}岁,家住{},电话{}'.format(lt[j].get('name'),lt[j].get('age'),lt[j].get('info')[1][1],lt[j].get('info')[0][1]))

  ```

  ​

  ```python
  lt = [
    {'name':'小王', 'age':18, 'info':[('phone', '123'), ('dizhi', '广州')]},
      {'name':'小芳', 'age':19, 'info':[('phone', '789'), ('dizhi', '深圳')]},
      {'name':'小杜', 'age':22, 'info':[('phone', '567'), ('dizhi', '北京')]},
      {'name':'小孟', 'age':28, 'info':[('phone', '000'), ('dizhi', '上海')]},
      {'name':'小乔', 'age':26, 'info':[('phone', '111'), ('dizhi', '河南')]},
  ]

  ```

- 打印九九乘法表

- ```python
  #8.打印九九乘法表
  for i in range (1,10):
    for j in range(1,i+1):
        print("%d*%d=%d" % (i,j,i*j),end=" ")
    print("")
  i = 1
  while i < 10:
     for j in range (i, 10):
          print("%s×%s=%s"%(i,j,i*j),end=" ")
     print()
     i+=1
  ```

  ​

- 从终端输入两个整数m和n,打印m*n的表格,如:2,5,打印如下图形:

- ```python
  m = int(input("请输入一个数字:"))
  n = int(input("请输入一个数字:"))
  for x in range(1,m+1):
     for y in range(1,n+1):

        print("{}".format((x-1)*n+y),end="  ")
     print()
   #m = int(input("请输入一个数字:"))
    n = int(input("请输入一个数字:"))
     s = m*n
    for x in range(s):
        if x%n == 0:
            print()
        print(x+1, end=" ")
  ```

  ​

  ```
  1 2 3 4 5
  6 7 8 9 10
  ```

  ​

猜你喜欢

转载自blog.csdn.net/qq_42938842/article/details/82531050
今日推荐