第二期课堂笔记

一、python 输入与输出

input()

  • 无提示: input()

  • 带文本提示 input("提示内容")

  • 文本分割 a,b=input().split()

print()

  • 直接输出,可以输出文本、数字、浮点等数据类型

print('文本',123,3.14)

  • 可以直接做数学运算

print(123 + 456)

  • 支持多参数,输出时每个数据以“空格”分隔 ,可以用关键字参数sep="" 调整为空或其它字符

print(a,b,sep="")

  • print输出后,默认换行(\n),可以用关键字参数 end="\n" 来调整为一行或其它字符

print(123456,end="")

f-string 文本格式化 format

  • print(f"") 或 print("".format())

print(f"a={a} b={b}推荐用法

等效于

print("a={} b={}".format(a,b)

数位格式化(小数位保留有效个数)

  • %d 整型输出

  • %f 浮点型输出

  • %s 字符串输出

  • %b%d%o%x 分别是二进制、十进制、八进制、十六进制。

  • ^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

二、数据转换

int() 、 str() 、 float()

  • int 整形
  • string 文本
  • float 浮点(小数)

三、map() 映射转换

a,b = map(int , input().split())

四、字符串索引

字符串是字符的有序集合,可以通过其位置来获得具体的元素。在 python 中,字符串中的字符是通过索引来提取的,索引从 0 开始。

python 可以取负值,表示从末尾提取,最后一个为 -1,倒数第二个为 -2,即程序认为可以从结束处反向计数。

下面是对 python 索引和切片的总结:

1. 索引获取特定偏移的元素

字符串中第一个元素的偏移为 0
字符串中最后一个元素的偏移为-1
str[0] 获取第一个元素
str[-2] 获取倒数第二个元素

2. 分片提取相应部分数据

通常上边界不包括在提取字符串内 如果没有指定值,则分片的边界默认为0和序列的长度

str[1:3 ]获取从偏移为1的字符一直到偏移为3的字符串,不包括偏移为3的字符串 : "tr"
str[1:] 获取从偏移为1的字符一直到字符串的最后一个字符(包括最后一个字符): "tring"
str[:3] 获取从偏移为0的字符一直到偏移为3的字符串,不包括偏移为3的字符串 : "str"
str[:-1] 获取从偏移为0的字符一直到最后一个字符(不包括最后一个字符串): "strin"
str[:] 获取字符串从开始到结尾的所有元素 : "string"
str[-3:-1] 获取偏移为 -3 到偏移为 -1 的字符,不包括偏移为 -1 的字符 : "in"
str[-1:-3] 和 str[2:0] 获取的为空字符,系统不提示错误: ""
分片的时候还可以增加一个步长,str[::2] 输出的结果为: "srn"

使用切片,反转数据实现判断回文数

a,b= map(int,input().split())
sum = str(a+b)
print(sum)
if( sum == sum[::-1] ):
    print("Yes")
else:
    print("No")

切片语法

list[begin:end:step]

step 中的正负值符号用于表示,切片方向:正值从左到右,负值从右到左

step= -1 即从后往前取值如: str[::-1] 获得反转数

取余运算

除法运算: 使用 / 结果可能产生小数(float)

整除运算: 使用 //结果只会保争留商的部分,余数会被舍弃

// 也叫“地板除” 向负无穷靠近 如: -4 // 3 => -2 int() 取整操作 向零靠近 如: int(-1.3) => -1

取模操作 %,现阶段可以等同于取余数

实际应用: 如: 35605 秒 等于几时几分几秒

n = 35605
m = n % 3600
print(f"{n // 3600 }:{m // 60}:{m%60}")

不用函数实现四舍五入

round()

加 0.5 实现 >0.5 数自动进位,小于0.5 的保持不进位
0.5 = > 0.5 + 0.5  = >  1.0 
0.6 =>  0.6 + 0.5  =>   1.1
0.8 =>  0.8 + 0.5  =>   1.3

0.4 => 0.4 + 0.5  =>   0.9
0.3 => 0.3 + 0.5  =>   0.8

11  = > 10
15  =>  20
保留十位数对个位进行四舍五入
a =  (a+5) // 10 * 10
保留到百位数
a = (a+50) // 100 * 100

不用条件判断实现向上取整

【需求】 每500克加收超重费4元,不足500克部分按500克计算;

设对 x 进行向上取整

(x + 500 -1) // 500 * 4

三目运算

在 Python 中,三目运算符是通过条件表达式实现的,其语法为:

x if condition else y

这个表达式会根据 condition 的布尔值选择 xy。如果 conditionTrue,则结果为 x;如果 conditionFalse,则结果为 y

# 示例1: 判断年龄是否大于18
age = 20
status = "Adult" if age >= 18 else "Minor"
print(status)  # 输出: Adult

# 示例2: 计算最大值
a = 5
b = 10
max_value = a if a > b else b
print(max_value)  # 输出: 10

运算符的运算优先级

( 低) -- ------------------------------------------------ -- (高)

赋值运算符 => 逻辑运算符 => 关系运算符 => 算术运算符

a= , += , /= and,or,not >= == < * / + -

闰年算法:

if( y % 400 == 0 or y % 4 == 0 and y % 100 != 0 )

6 comments

  • @ 2024-8-18 20:54:36

    📖 match case基本语法概览

    语法结构解析 在Python 3.10及更高版本中,match-case语句引入了一种新的模式匹配机制,它类似于其他语言中的switch-case结构,但更加强大和灵活。match-case允许开发者通过模式匹配来进行复杂的条件判断 ,而不仅仅是简单的值比较。这不仅提高了代码的可读性,还提供了更丰富的表达能力。

    判断月份
    match m :
        case 1 | 3 | 5 | 7 | 8 | 10 |12:
            d = 31
        case 2:
            d=28
        case 4|6|9|11:
            d=30
        case _ :
            d = 0 # print("月份错误")
    

    _ 表示默认情况, | 表示并列的情况 case 可以用于,整型、字符串,数据类型判断等情况。

    匹配整型与浮点型 在使用match-case语句时,我们可以针对不同的数据类型设计特定的模式匹配逻辑。例如 ,对于整型和浮点型,我们可以分别定义匹配条件,以便根据数值的类型执行不同的操作。

    示例代码:匹配整型与浮点型

    def process_number(number):
        match number:
            case int():
                print("This is an integer.")
            case float():
                print("This is a floating point number.")
            case _:
                print("Not a number.")
     
    process_number(42)
    process_number(3.14)
    

    输出:

    This is an integer.

    This is a floating point number.

    🤣 1
    • @ 2024-8-14 20:04:56

      回文数是正着读和反着读都一样的数字,例如121或1331。

      三位数的回文数:

      aba = 判断 百位=个位,那这个数一定是回文数

      # 字符串处理方法
      str = 343
      if(str[0] == str[2] )
      
      # 求商取余法
      n = 343
      gw = n % 10  => 3
      n = n // 10  => 34
      sw = n % 10  => 4
      n = n // 10  => 3
      bw = n % 10  => 3
      

      水仙花数(或自恋数)是一个数等于其各位数字的立方和,例如1 5 3(1³ + 5³ + 3³ = 153)。

      1 + 125 + 27 = 153

      玫瑰花数通常指的是一个数等于其各位数字的五次方和,例如4150(4⁵ + 1⁵ + 5⁵ + 0⁵ = 4150)。这些都是在数字理论中很有趣的概念。

      1 3 5 8 13 21

      • @ 2024-8-13 19:30:31

        简易判断一个数是不是整型

        a = 10.01
        if a == int(a) :
            print(int(a))
        else:
            print(f"{a:.1f}")
        

        isinstance()的使用

        isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。

        基础数据类型

        整型:int , 字符串 string , 浮点:float

        n = 123
        print(type(n))
        n = '1234'
        print(type(n))
        # 综上,type() 显示数据类型
        print("*"*30)
        zx = "123"
        ans = isinstance(zx,int)
        print(ans)
        ans = isinstance(zx,str)
        print(ans)
        

        isinstance 用于判断指定对象是否为指定基础类型

        输出结果:

        <class 'int'>
        <class 'str'>
        ******************************
        False
        True
        
        • @ 2024-8-12 20:28:41

          四舍六入五留双

          动态指定小数保留位数的方法:

          f,d = input().split()
          f, d = float(f) ,int(d)
          ## 文本格式中的“*”是一个通配符,当代码运行时才指定保留小数点位数
          print("%.*f" %(d,f))
          ## 在f-string中可以继续使用{d}来表示通配符
          print(f"{f:.{d}f}")
          
          • @ 2024-8-12 19:50:46

            常量定义

            PI = 3.14159  # const 伪常量
            # 常量通常全部大写字母来命名(约定优于配置)
            r = float(input())
            d = PI*r    #  直径
            c = PI*d    #  周长
            s = PI*r*r  #  面积
            print(f"直径为:{d:.4f} 周长为:{c:.4f} 面积为:{s:.4f}")
            print("直径为:%.4f 周长为:%.4f 面积为%.4f" %(d,c,s) )
            
            
            • @ 2024-8-11 20:56:24

              格式化示例

              print("整数:%d,%d,%d" % (1, 22.22, 33))
              print("整数不足5位,左边补空格   %5d   " % 22)
              print("整数不足5位,左边补0     %05d   " % 22)
              print("整数不足5位,右边补空格  %-5d   " % 22, "end")
              print("八进制 %o" % 222)
              print("十六进制 %x" % 12)
              

              输出结果:

              整数:1,22,33
              整数不足5位,左边补空格      22   
              整数不足5位,左边补0     00022   
              整数不足5位,右边补空格  22       end
              八进制 336
              十六进制 c
              
              • 1