Python基本语法(下)

# 语言: python3.8
# 工具: PyCharm x64
# 目的: 防止忘记基本语法
# 使用Ctrl+/ 可快速多行注释/取消注释
# 在序号右边单击出现红点,右键选择Debug可以调试程序


# 一堆单引号或双引号效果一样
print("python2")
print('python3')
print("-------------------------------------------------------------")


# 一对单三引号或一对双三引号效果一样,可保留原文格式
print('''Today is
sunday. ''')
print("""one two
three four
five six""")
print("-------------------------------------------------------------")


# 常用转义字符
print('这里\n有一个换行,这里\t\t\t有3个tab')
print("-------------------------------------------------------------")


# 字符串的索引,正向从0开始,逆向从-1开始计数 (或者说以结束符'\0'为倒数第0个,但是取不到结束符)
Str = '时未遇兮无所将'
# 打印下标为2的字符
print(Str[2])
# 打印倒数第1个字符
print(Str[-1])
# 字符串截取 [起始下标默认0 : 结束下标-1 : 间隔步长默认1]
print(Str[2:5:1])
# 打印整个字符串
print(Str)
print("-------------------------------------------------------------")


# 格式化输出 format, %, f字符串(format简化)
user1 = '小明'
user2 = '康康'

# print("{}..{}".format(元素1,元素2...)), 元素对应括号中的序号,从0开始,如果{}中空着,就是默认顺序
print("{0}对{1}说:'Hello!' ".format(user1, user2))

# print("%s..%d" % (元素1,元素2...))
print("%s对%s说: 'Hi!' " % (user2, user1))

# f-string, print(f"{元素1}..{元素2}")
print(f"{user1}对{user2}说: 'haha' ")
print("-------------------------------------------------------------")


# 列表用 [] 表示, 元素可不同类型组合。
# 元组用 () 表示, 不可变的列表, 其它跟列表相似。 
# 集合用 set()方法,例如Set = set(list),list为列表、元组都行。
# 字典用 {} 表示


# 若元组, List1[0] = 1 将报错,不可修改
List1 = (1, 'a', '8.33')

myList = [1, 'a', 5.5, "Hello"]
print(myList[2], end=' ')
print(myList[3])
# 更改指定位置元素
myList[0] = 'ICBC'
# 输出列表长度
print(len(myList))
# 末尾增加元素
myList.append('100')
# 指定位置增加元素,还有pop(), remove(), clear() ...
myList.insert(2, '3.333')
print(myList)
print("-------------------------------------------------------------")


# 字典{}, 索引 --> 值
user = {
    'name': 'Tom',
    'sex': 'male',
    'age': 18
}
# 类似于索引查找
print(user['name'])
# 通过索引改变属性值
user['age'] = 21
# 使用没有的属性,就相当于增加属性
user['height'] = 178
print(user)
print("-------------------------------------------------------------")


# 函数, 为何使用函数?
# 1.降低编程难度; 2.增加代码的复用
# 如计算 5!, 8!,12!, 需要分别编程计算三次
# 若使用函数,可以传入参数,一次书写多次复用

# def 函数名(参数1, 参数2, 参数3, ...)
def factorial(num):
    result = 1
    for i in range(1, num+1):
        result *= i
    return result


# 调用函数
print(factorial(5))
print(factorial(8))
print(factorial(12))
print("-------------------------------------------------------------")


# 文件操作, 默认地址在执行文件同目录下
# 写内容到文件, mode='w'覆盖式写, mode='a'追加式写, 注意 w、a 都是小写
Writer = open('hello.txt', mode='w', encoding='utf-8')
Writer.write('时未遇兮无所将,\n')
Writer.write('何悟今兮升斯堂。\n')
# 关闭
Writer.close()

# 读取文件, 打开文件, 选择编码以防报错
file = open('hello.txt', encoding='utf-8')
# 打印读出的内容
print(file.read())
file.close()
print("-------------------------------------------------------------")


# 类和对象: 面向对象编程
# class 类名:
class Person:
    # 公有变量, 实例和类可以访问
    data1 = 10
    # 私有变量, 实例和类均不可访问
    __data2 = 15

    # def __init__构造类,可带/不带参数
    def __init__(self, name, sex, age):
        # 对象属性赋值self.name是当前对象属性,name是参数传值
        self.name = name
        self.sex = sex
        self.age = age

    # 实例化方法, 对象可以调用, 类不能直接调用
    def speak(self):
        # 类中方法可以读取类属性
        print(f"{self.name}:I'm {self.age} year old.")

    # 静态方法, 类和对象都可以调用
    @staticmethod
    def cry():
        print("wa wa wa ~~~")


# 类名可以调用静态方法
Person.cry()
# 根据构造函数实例化对象
tom = Person('tom', 'male', 21)
# 对象也可以调用类静态方法
tom.cry()
tom.speak()

 

输出结果:

python2
python3
-------------------------------------------------------------
Today is
sunday. 
one two
three four
five six
-------------------------------------------------------------
这里
有一个换行,这里            有3个tab
-------------------------------------------------------------
遇
将
遇兮无
时未遇兮无所将
-------------------------------------------------------------
小明对康康说:'Hello!' 
康康对小明说: 'Hi!' 
小明对康康说: 'haha' 
-------------------------------------------------------------
5.5 Hello
4
['ICBC', 'a', '3.333', 5.5, 'Hello', '100']
-------------------------------------------------------------
Tom
{'name': 'Tom', 'sex': 'male', 'age': 21, 'height': 178}
-------------------------------------------------------------
120
40320
479001600
-------------------------------------------------------------
时未遇兮无所将,
何悟今兮升斯堂。

-------------------------------------------------------------
wa wa wa ~~~
wa wa wa ~~~
tom:I'm 21 year old.

Process finished with exit code 0