欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python基础day04笔记

程序员文章站 2024-03-17 16:26:46
...

2018.7.5

day03回顾:

字符串 str

  • ''
  • ""
  • ''''''
  • """"""

 

  • '''first line
  • second line'''



字符串内的转义字符 '\'

  •   \n
  •   \r
  •   \t
  •   \'
  •   \"
  •   \\
  •   \xXX
  •   \uXXXX
  •   \UXXXXXXXX



ascii (记录128个英文字符对应的编码)
Unicode (记录65536个文字(包含英文的128个ASCII))


ASCII与UNICODE的区别:
  ASCII 用8个位表示文字,最高位一定为0,低7位表示数值
  UNICODE16是由16个位组成的(0~65535)0x0000~0xFFFF


原始字符串

  •   r''
  •   r""
  •   r''''''
  •   r""""""
  •   '\n' != r'\n'

字符串的运算

  •   < <= > >= == !=
  •   +    *   +=    *= 
  •   in,  not in 
  •   索引, 切片



函数:

  •   len(x)
  •   max(x)    求最大值的字符
  •   min(x)
  •   ord(单个字符)
  •   chr(整数)

 

  •   hex(i)
  •   oct(i)
  •   bin(i)  转为字符串

 

  •   str(obj)  #将对象转为字符串



  常用的字符串
  S.count
  S.strip()
  S.center()
  S.replace()
  S.startswith()
  S.endswith()
  ....详见文档
  查看字符串的方法:
    >>> help(str)  # str是字符串的类型


day04笔记


字符串的格式化表达式
  作用:

  •     生成一定格式的字符串

  语法格式:

  •     格式字符串 % 参数值
  •     格式字符串 % (参数值1, 参数值2, ...)

  说明:

  •     格式化字符串中以%开头的为占位符,占位符的位置将用参数值替换

  示例:
    fmt="name:%s, age: %d"
    name = "tarena"
    age = 15
    s = fmt % (name, age)  # s = 'name:tarena, age: 15'
    print()


格式化字符串中的占位符和类型码:

  •   %s     字符串,使用str(obj)转为字符串
  •   %r     字符串,使用repr(obj) 转为字符串
  •   %c     整数转为字符串,使用chr(i) 函数
  •   %d     十进制整数
  •   %o     八进制整数
  •   %x     十六进制整数(字符a-f小写)
  •   %X     十六进制整数(字符A-F大写)
  •   %e     指数型浮点数(e小写)  如 2.9e+10
  •   %E     指数型浮点数(E大写)  如 2.9E+10
  •   %f,%F  浮点十进制形式
  •   %g,%G  进制进形式浮点或指数浮点自动转换
  •   %%     等同于一个%字符



占位符和类型码之间的格式语法:

  •   % [- + 0 宽度.精度] 类型码
  •   -   左对齐(默认是右对齐)
  •   +   显示正号
  •   0   左侧空白位置补零
  •   宽度: 整个数据输出的宽度
  •   精度: 保留小数点后多少位,默认6位

  示例:

  •     "%10d"  % 123    # '       123'
  •     "%+10d"  % 123   # '      +123'
  •     "%-10d"  % 123   # '123       '
  •     "%10s" % "ABC"   # '       ABC'
  •     "%05d" % 123     # '00123'
  •     "%f" % 3.1416926535897932  # '3.141593'(保存小数点6位,四舍五入)
  •     "%7.2f" % 3.1416926535897932 # '   3.14'(3前面3空格,7代表7个字符,2代表小数点2位)



练习:
  输入三行文字,让这三行文字依次以20个字符的宽度右对齐输出
  如:
    请输入第1行: hello world
    请输入第2行: aaa
    请输入第3行: ABCDEFG
  输出结果如下:
          hello world
                     aaa
          ABCDEFG

  做完上面的题后思考:
   能否以最长的字符串的长度进行右对齐显示(左侧填充空格)

a = input("请输入第1行: ")
b = input("请输入第2行: ")
c = input("请输入第3行: ")

# 方法1
print("%20s" % a)
print("%20s" % b)
print("%20s" % c)

# 方法2
# print(' ' * (20 - len(a)) + a)
# print(' ' * (20 - len(b)) + b)
# print(' ' * (20 - len(c)) + c)

print('----------以最长字符串长度进行右对齐------')
# 方法1
# max_length = len(a)
# if len(b) > max_length:
#     max_length = len(b)
# if len(c) > max_length:
#     max_length = len(c)
# print("最长的字符串长度为:", max_length)
# print(' ' * (max_length - len(a)) + a)
# print(' ' * (max_length - len(b)) + b)
# print(' ' * (max_length - len(c)) + c)

# 方法2
max_length = max(len(a), len(b), len(c))

# fmt = '%' + str(max_length) + 's'  # "%数字s"
fmt = '%%%ds' % max_length  # "%数字s"
print('=====>', fmt)
print(fmt % a)
print(fmt % b)
print(fmt % c)



循环语句:

  •   while 语句
  •   for 语句



问题:
  输入一个整数n, 写程序打印如下:
     这是第 1 行
     这是第 2 行
     这是第 3 行
     ...
     这是第 n 行
  问题:
    如何让一条语句重复执行多次?
    用:
      print("这是第", i, '行')  
    能否实现


while 语句 
  作用:
    根据一定条件,重复的执行一条语句或多条语句
  语法:

  •     while 真值表达式:
  •         语句块1
  •     else:
  •         语句块2

  说明:

  1. 先执行真值表达式,测试布尔值是否为True或False
  2. 如果真值表达式测试值为True,则执行语句块1,然后再返回到第1步,重重进行测试
  3. 如果真值表达式测式值为False, 则执行else子句中的语句块2,然后结束此while语句,如果没有else子句,则直接结束此while语句的执行

    注: 

  •       else 子句部分可以省略(同 if语句类似)

  示例见:

i = 1  # 先定义一个变量,用于控制循环条件
while i <= 10:
    print("这是1 行文字")
    i += 1

print("程序结束")



练习:
  1. 输入一行字符串,将字符串中Unicode编码值最大的一个字符打印出来(不允许用max函数)
    (提示: while语句内可以嵌入 if 语句进行判断)

s = input('请输入字符串: ')  # 'ABCD'

zuida = s[0]  # 先假设第一个字符最大
i = 1  # 循环变量,用于记录字符串第二个字符起的起始位置
       # i一定小于len(s) 字符串长度
while i < len(s):  # 当索引超出最大索引时结束循环
    next_char = s[i]  # 获取下一个字符
    # 如果下一个字符的编码值大于zuida的编码值,则改变zuida
    if ord(next_char) > ord(zuida):
        zuida = next_char
    i += 1  # 下标(索引)向后移动一个

print("编码值最大的一个字符是:", zuida)



  2. 打印 从零开始的浮点数,每个数增加 0.5, 打印出10以内的这样的数:
     0.0
     0.5
     1.0
     1.5
     ...
     9.5

i = 0.0
while i < 10:
    print(i)
    i += 0.5


练习:
1. 打印 1 ~ 20的整数

i = 1
while i <= 20:
    print(i)
    i += 1



2. 打印从10开始 到 0(不包含0)之间的整数

i = 10
while i > 0:
    print(i)
    i -= 1



3. 打印 1 ~ 20的整数,打印在一行内

i = 1
while i <= 20:
    print(i, end=' ')
    i += 1

print()  # 换行



4. 打印 1 ~ 20的整数,每行打印5个,打印四行如:
  1 2 3 4 5
  6 7 8 9 10
  11 12 .....
  .....
  提示: while中可以嵌入if语句来换行

# 方法1
# i = 1
# while i <= 20:
#     print(i, end=' ')
#     if i == 5:
#         print()
#     if i == 10:
#         print()
#     if i == 15:
#         print()
#     if i == 20:
#         print()
#     i += 1

#方法2
i = 1
while i <= 20:
    print(i, end=' ')
    if i % 5 == 0:
        print()
    i += 1




5. 输入一个整数n, 打印出一个长方形
   n 代表长方形的宽度的字符数和高的行数
   例如:
     请输入:4
    打印:
      ####
      #  #
      #  #
      ####
     请输入:6
    打印:
      ######
      #    #
      #    #
      #    #
      #    #
      ######

n = int(input("请输入宽/高: "))

# 第一行
print('#' * n)

# 中间行(n-2行)
i = 1
while i <= n - 2:
    # 打印每一行
    # s = '#' + ' ' * (n -2) + '#'
    # print(s)
    print('#', ' ' * (n - 2), '#', sep='')
    i += 1

# 最后一行 
print('#' * n)


while 语句的注意事项:
  要控制循环真值表达式的值来防止'死循环'
  通常用真值表达式内的循环变量来控制循环条件
  通常在循环语句块内改变循环变量来控制循环次数和变量走向


while 语句的嵌套
  while 语句本身是语句,和其它语句一样,可以嵌套放入任何复合语句中


  示意:
    while 真值表达式:
        ...
        while 真值表达式2:
            ...
        else:
            ...
    else:
        ...
  示例:
    打印1~20之间的整数,打印在一行
    1 2 3 4 5 6 ......... 20
    打印以上的十行

j = 0
while j < 10:
    i = 1
    while i <= 20:
        print(i, end=' ')
        i += 1
    else:
        print()  # 打印换行
    # print('1 2 3 4 5 6 7 8 ..... 10')
    j += 1




sublime text 3 快捷键:

  •     ctrl + shift + 上下  # 交换行
  •     ctrl + ]   # 向右缩进
  •     ctrl + [   # 向左缩进





练习:
  输入一个数,打印指定宽度的正方形
  如:
    输入: 5
  打印如下正方形:
    1 2 3 4 5
    1 2 3 4 5
    1 2 3 4 5
    1 2 3 4 5
    1 2 3 4 5
  如:
    输入: 3
  打印如下正方形:
    1 2 3
    1 2 3
    1 2 3

n = int(input("请输入一个数: "))
# 先写一个循环,打印n行任意的数
i = 0  # 控制外重循环的变量
while i < n:
    # 打印其中的一行:
    j = 1  # 控制一行内数字的变量
    while j <= n:
        print(j, end=' ')
        j += 1
    print()  # 打印一行后的换行
    i += 1

#     1 2 3 4 5
#     1 2 3 4 5
#     1 2 3 4 5
#     1 2 3 4 5
#     1 2 3 4 5



练习:
  1. 写程序,计算:
    1 + 2 + 3 + 4 + ..... + 99 + 100的和


  2. 写程序,任意输入一个数n,计算:
    1 + 2 + 3 + 4 + ..... + (n-1) + n的和

# 练习:
#   1. 写程序,计算:
#     1 + 2 + 3 + 4 + ..... + 99 + 100的和
s = 0  # 先创建一个变量,用来存储所有数的和
i = 1  # 整数的起始数
while i <= 100:
    s += i  # 把i的值累加到s当中
    i += 1

print('和是:', s)


#   2. 写程序,任意输入一个数n,计算:
#     1 + 2 + 3 + 4 + ..... + (n-1) + n的和
n = int(input("请输入结束整数: "))

s = 0  # 先创建一个变量,用来存储所有数的和
i = 1  # 整数的起始数
while i <= n:
    s += i  # 把i的值累加到s当中
    i += 1

print('和是:', s)



break 语句
  问题:
    如果在循环过程中不想再继续此循环语句的执行了,怎么办?
  作用:
    用于循环语句(while, for)中,用来终止当前循环语句的执行
  说明:

  1. 当break语句执行后,此循环语句break之后的语句将不再执行
  2. break 语句通常和 if 语句组合使用
  3. break语句终止循环时,循环语句else子句的语句将不会执行
  4. break 语句只能终止当前循环语句的执行,如果有循环嵌套时,不会跳出嵌套的外重循环
  5. break 语句只能在循环语句(while或for语句)内部使用

  示例见:

i = 1
while i <= 6:
    print("循环开始时:", i)
    if i == 3:
        break
    print("循环结束时:", i)
    i += 1
else:
    print("这是else子句里的语句")




死循环
  死循环是指循环条件一直成立的循环
  死循环通常用break语句来终止循环
  死循环的else子句永远不会执行


示例:

i = 1
while True:
    n = int(input("请输入一个数: "))
    if n == i:
        print("跳出循环")
        break
    print(i, n)
    i += 1



练习:
  1. 任意输入一些数,当输入负数时结束输入
    当输入完成后,打印您输入的这些数的和是多少?

he = 0  # 
while True:  # 开始循环做事情
    n = int(input("请输入一个数:"))
    if n < 0:
        break  # 结束做事情 
    he += n  # 开始累加

print("和是:", he)


  2. 写程序求:
    Sn = 1 + 1/2 + 1/4 + 1/8 + .... + 1/(2**n)
    求当n等同于100时,sn的值是多少?

sn = 0

n = 0
while n <= 100:
    a = 1/(2**n)
    sn += a
    n += 1

print("和是:", sn)


  3. 用while语句实现打印三角形,输入一个整数,表示三角形的宽度和高度,打印出相应的直角三角形:
    如:
      请输入三角形的宽度: 4
      1) 打印如下:
        *
        **
        ***
        ****
      2) 打印如下:
           *
          **
         ***
        ****
      3) 打印如下:
        ****
         ***
          **
           *
      4) 打印如下:
        ****
        ***
        **
        *

# 请输入三角形的宽度: 4
n = int(input("请输入三解形的宽度: "))

line = 1  # line 代表行数
while line <= n:
    # 打印一行星
    print('*' * line)
    line += 1  # 行数变大
# 1) 打印如下:
#   *
#   **
#   ***
#   ****

print('-------------------')
line = 1
fmt = "%%%ds" % n
while line <= n:
    print(fmt % ('*' * line))
    line += 1
# 2) 打印如下:
#      *
#     **
#    ***
#   ****

print('-------------------')
stars = n  # 第一行星号的个数
while stars > 0:
    # 先计算空格的个数
    blank = n - stars
    print(' ' * blank + '*' * stars)
    stars -= 1  # 下一行星号个数变少一个
# 3) 打印如下:
#   ****
#    ***
#     **
#      *

print('-------------------')
stars = n  # 第一行星号的个数
while stars > 0:
    # 先计算空格的个数
    print('*' * stars)
    stars -= 1  # 下一行星号个数变少一个
# 4) 打印如下:
#   ****
#   ***
#   **
#   *

 

 

相关标签: python