序言:编写Python代码的一些注意事项

  1. 代码要整洁/美观(必要时在字符之间加空格)

  2. Python的一个设计哲学:解决一个问题,只提供一种方案~

  3. 在Python中报错,有两种情况:

    • 语法错误。在程序运行之前,Python解释器就能把错误识别出来。

    • 运行错误。在程序运行之前,识别不了的,必须要执行到对应的代码,才能发现问题。(也叫做“抛出异常”,如果程序出现“抛出异常”,程序直接终止,异常后面的代码也不会执行。)

  4. 在Python中,一个语句写完了以后,分号可有可无。如果多个语句写到同一行,那么语句和语句之间务必要加上分号(这种写法不推荐)。

  5. 在Python中如果要使用外部模块,务必在使用之前声明import “外部模块”。

一、常量和表达式

1.print函数

1.1 print函数可以计算四则运算的结果;

print(1 + 2 - 3)# 0
print(1 + 2 * 3)# 7
print(1 + 2 / 3)# 1.66666666666665

1.2 在Python中,2/3得到的结果是0.66666666……,而不是0!

而在C/Java中,整数 / 整数 的结果还是整数,并且会把小数部分直接舍弃!

1.3 在编程中,一般没有“四舍五入”的规则。对于浮点数具有一定的标准(.IIEEE754),这套规则在内存中表示浮点数的时候,可能会存在微小的误差。

2.常量和表达式

2.1 在上述代码中,形如 1 + 2 - 3 称为表达式;

2.2 这个表达式的运算结果,称为表达式的返回值;

2.3 “1 2 3”这样的数字,称为字面值常量;

2.4 + - * / 称为运算符/操作符;

2.5 在Python中,用**n表示n次方;

示例

print( (67.5 + 89.0 + 12.9 + 32.2) / 4 )

二、变量和类型

1.认识变量

示例

计算67.5、89.0、12.9、32.2的方差

avg = (67.5 + 89.0 + 32.2 + 12.9) / 4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (32.2 - avg) ** 2 + (12.9 - avg) ** 2
print(total / 3)
# 其中avg  total均为变量

变量可以视为是一块能够容纳数据的空间,变量是存储在内存上面的。

2.创建变量

a = 10

2.1 “a”是变量名,“=”表示赋值运算符,不是数学上的比较相等。

2.2 变量命名的规则

  • 变量名必须由数字、字母、下划线构成。不能包含特殊符号。

a*a 不合法

  • 变量名不能由数字开头。

1a 不合法

  • 变量名不能和Python的关键字重复。

if 这种变量名不合法

  • 4.Python中的变量名是大小写敏感的,区分大小写

Num = 10 num = 10

  • 软性规则(建议遵守)

    • 给变量命名是尽量使用描述行的单词,尽量通过名字来表现出变量的作用。

    • 当使用一个单词描述不清楚时,可以使用多个单词来命名。

    驼峰命名、蛇形命名等...

3.变量的使用

3.1 读取变量的值

a = 10# 创建变量(初始化)
print(a)

3.2 修改变量的值

a = 10# 创建变量(初始化)
a = 20# 修改a的内容(赋值)
print(a)

4.变量的类型

Python中变量的类型,不需要再定义变量的时候显式声明。

而只是依靠初始化语句,根据初始化的值的类型来进行确定的。

4.1 整数 int

a = 10
print(type(a))

# <class 'int'>

在Python中,int能表示的数据范围,是“无穷”的。(对比Java int的范围为-21亿~+21亿)

Python 的 int 是可以根据表示的数据的大小,自动扩容。

因此Python中没有long这样的类型,类似的,byte,short这些类型在Python中也不存在。

4.2 浮点数(小数) float

b = 0.5
print(type(b))

# <class 'float'>

Python中的 float 就是双精度浮点数。(等同于C++/Java中8个字节的double类型)

4.3 字符串 str

c = 'hello'
print(type(c))
d = "hello"
print(type(d))

# <class 'str'>
# <class 'str'>

Python中要求使用引号(’ '、" "均可)把一系列字符引起来,就构成了字符串。

Question1:如果要打印字符串中的引号?

e = 'My name is "Li Hua"'
print(type(e))
print(e)

# <class 'str'>
# My name is "Li Hua"

如果字符串中包含了双引号,表示字符串就可以用单引号引起来。

如果字符串中包含了单引号,表示字符串就可以用双引号引起来。

Question2:如果同时有单引号和双引号,怎么办?

f = '''My 'name' is "Li Hua"'''
print(f)

# My 'name' is "Li Hua"

Python中还有一种字符串,用三引号(三个单引号或三个双引号)表示。

4.3.1 用len函数求字符串的长度
f = '''My 'name' is "Li Hua"'''
print(len(f))

# 21
4.3.2 字符串的拼接运算
a1 = 'hello'
a2 = ' world'
print(a1 + a2)

# hello world

新的字符串对原来的字符串没有影响。

注意:字符串不能和数字混合相加!

a1 = 'hello'
a2 = 10
print(a1 + a2)

# 报错

Pycharm报错界面

4.4 布尔 bool

布尔的取值只有真和假。因此布尔类型主要用于逻辑判定。

真(True)假(False

c1 = True
c2 = False
print(type(c1))
print(type(c2))

# <class 'bool'>
# <class 'bool'>
  • 注意,如果把整数和布尔类型的值进行算术运算,此时就会把True当做1,False当做0。(C/C++中也有类似操作,但Java直接报错)

4.5 其他类型

除了上述类型之外,Python中还有list,tuple,dict,自定义类型等等。

4.6 变量类型的意义

4.6.1 不同的类型,占用的内存空间是不同的(占几个字节)。

  • int 4个字节,动态扩容

  • float 固定8个字节

  • bool 1个字节就够了

  • str 取决于字符串的长度

4.6.2 不同的类型,对应的操作也是不同的。

int / float+ - * /均可执行无法使用len
str+可执行 - * /均无法执行可以使用len

4.7 动态类型特性

程序运行的过程中,变量的类型可能会发生改变。

a = 10
print(type(a))

a = 'hello'
print(type(a))

a = True
print(type(a))

# <class 'int'>
# <class 'str'>
# <class 'bool'>

一个编程语言,是否是动态类型,只是取决于运行时,类型是否会发生改变。

不取决于变量定义的时候是否声明类型!

而Python作为一个动态类型的语言,在定义变量的时候,也是可以写类型的!(但并不影响动态类型的特性)

a:int = 10
print(type(a))

a:str = 'hello'
print(type(a))

a:bool = True
print(type(a))

# <class 'int'>
# <class 'str'>
# <class 'bool'>

4.8 静态类型特性

程序运行的过程中,变量的类型始终不变。

C++/Java中:int a = 10;

a这个变量在程序运行的整个过程中,始终都是int,如果尝试a = “hello” ,编译器就会报错。

结论:相比之下,尤其是在一些大型(多人协作)的程序中,静态类型要优于动态类型(更稳定,不容易出错)。

三、注释

1.注释的定义

注释是一种特殊的代码,它不会影响到程序的执行,但是能够骑到解释说明的作用,能够帮助程序员理解程序代码的执行逻辑。

2.注释的语法

2.1 行注释

# 这是一行注释。

批量注释/还原代码:Ctrl + /

2.2 文档字符串

使用三引号引起来的叫文档字符串。可以注释多行内容,一般放在文件/函数/类的开头,“”"或’''均可。

"""
这是一段文档字符串。
"""

'''
这是一段文档字符串。
'''

3.注意事项

  1. 注释的内容应该是准确的。(修改代码注释要同步修改)

  2. 篇幅合理,既不要太精简,也不要长篇大论。

  3. 使用中文。

  4. 内容要积极向上,不要有负能量。

四、程序的输入和输出

1.和用户交互

  • 用户把信息传递给程序,称为“输入”。

  • 程序把结果展示给用户,称为“输出”。

输入输出最基本的方式就是控制台。用户通过控制台输入一些字符串,程序在通过控制台打印出一些字符串。

控制台:PyCharm、 Windows cmd……

PyCharm界面
Windows cmd

2.输出到控制台

a = 10
print(f"f(a) = {a + 20}")# f(a) = 30

这个语法,叫做“格式化字符串”,记作“f-string”(f表示format)。

这时就可以使用 { } 这样的语法,向字符串里嵌入变量或者表达式。

3.从控制台输入

num = input("请输入一个整数:")# 请输入一个整数:
print(f"您输入的整数是:{num}")# 您输入的整数是:36

input执行的时候,就会等待用户输入。

num = input("请输入一个整数:")
print(type(num))
print(f"您输入的整数是:{num}")

# 请输入一个整数:36
# <class 'str'>
# 您输入的整数是:36

input返回的值,其实是一个字符串str。

  • 如果只是单纯的拿到用户的输入,然后打印,那么此时就按照str打印即可。

  • 如果需要根据用户输入的内容进行算数计算,此时就需要先把读取到的str类型转化为int类型。

    • 可以使用int():a = int(input("请输入一个数字:"))
m = input('请输入第一个整数:')
n = input('请输入第二个整数:')
print(f'm + n = {m + n}')

m = input('请输入第一个整数:')
n = input('请输入第二个整数:')
m = int(m)
n = int(n)
print(f'm + n = {m + n}')

# 请输入第一个整数:10
# 请输入第二个整数:20
# m + n = 1020
# 请输入第一个整数:10
# 请输入第二个整数:20
# m + n = 30

推广:类型转换,例如int(),str(),float()……

f1 = input('请输入第一个数字:')
f2 = input('请输入第二个数字:')
f3 = input('请输入第三个数字:')
f4 = input('请输入第四个数字:')

f1 = float(f1)
f2 = float(f2)
f3 = float(f3)
f4 = float(f4)

avg = (f1 + f2 + f3 + f4) / 4
print(f'平均值是:{avg}')

# 请输入第一个数字:10.5
# 请输入第二个数字:20.5
# 请输入第三个数字:30.5
# 请输入第四个数字:40.5
# 平均值是:25.5

五、运算符

1.算术运算符

原则:先算乘方,再算乘除,最后算加减。如果想修改运算顺序,就要加()。

  • 除法的第一个问题:有些编程语言中,\0被视为抛出异常,但\0.0则会得到一个无穷大的值。而Python中则一视同仁地视为抛出异常。

  • 除法的第二个问题:整数 / 整数如果除不尽,就会得到小数,不会截断。(除了Python语言,大部分的编程语言,都是整数 / 整数结果是整数。)

  • **既能支持整数次方,也能支持小数次方。

  • //表示地板除法(取整除法),会针对计算的结果“向下取整”。

    print(7 // 2)# 3
    print(-7 // 2)# -4
    

2.关系运算符

关系运算符就是在比较两个操作数之间的“大小”、“相等”这样的关系。

  • 关系运算符对应的表达式的“值”是布尔类型。符合表达式为“真”

    a = 10
    b = 20
    print(a < b)# True
    print(a > b)# False
    
  • 关系运算不仅可以比较数字,还可以比较字符串。

    • 比较规则:按照字典序。如果首字母不同,谁小谁就排在前面;如果首字母相同,以此类推。

    • 注意:针对中文字符串比较大小是没有意义的。

    a = 'hello'
    b = 'world'
    print(a < b)# True
    print(a > b)# False
    
  • 在C语言中,用strcmp函数比较字符串(如果直接使用本质是在比较两个字符串首元素的地址);在Java中使用equals方法比较字符串(如果直接使用本质上是在比较两个字符串是否是同一个对象)。相比之下,Python中的“==”和“!=”才是大众的方法。

  • 针对浮点数来说,使用来比较相等,存在一定的风险。因为浮点数在内存中的存储和表示是可能存在误差的,这样的误差在算术运算的时候可能会被放大,从而导致的判定出现误判。

    print(0.1 + 0.2 == 0.3)
    print(0.1)
    print(0.2)
    print(0.1 + 0.2)
    print(0.3)
    
    # False
    # 0.1
    # 0.2
    # 0.30000000000000004
    # 0.3
    
  • 正确的比较浮点数相等的方法:作差,看差值是否小于预期的误差范围。

    • Python中支持连续小于的写法。C/C++/Java中是不支持的。
    a = 0.1 + 0.2
    b = 0.3
    print(-0.000001 < (a - b) < 0.000001)# True
    

3.逻辑运算符

3.1 and 并且

两侧操作数均为True,表达式的值为True,否则为False(一假则假)。

  • 短路求值:如果左侧表达式为False,那么整体的值一定是False,不必计算右侧的表达式。

3.2 or 或者

两侧操作数均为False,表达式的值为False,否则为True(一真则真)。

  • 短路求值:如果左侧表达式为True,那么整体的值一定是True,不必计算右侧的表达式。

3.3 not 逻辑取反

只有一个操作数。操作数为True,则返回False;操作数为False,则返回True。


a = 10
b = 20
c = 30
print(a < b and b < c)# True
print(a < b and b > c)# False
# a < b and b < c 等价于 a < b < c
print(a < b < c)# True

print(a > b or b < c)# True
print(a < b or b > c)# True
print(a > b or b > c)# False

print(not a < b)# False
print(not a > b)# True

4.赋值运算符

4.1 “=”的使用

= 表示赋值,意思是把右侧的值填充到左侧的空间(变量)中。

  • 链式赋值(a = b = 10):注意,一般不建议“链式赋值”。

  • 多元赋值(a , b = 10 , 20):能解决一些特殊问题。

    • 例如,交换两个变量。
    a = 10
    b = 20
    
    a , b = b , a
    
    print(a , b)# 20 10
    

4.2 复合赋值运算符

+= -= *= /= %= **= //= ……叫做复合赋值运算符。

a = a + 1
a += 1
# 这两种写法等价
  • 注意,在C++/Java中“a++/++a”的自增/自减操作在Python中不支持。

    • 之所以++a没有报错,是因为Python解释器把“+”当成了正号。

4.3 其他

Python中还有身份运算符(is/is not),成员运算符(in/not in),位运算符(& | ~ ^ << >>)等

六、顺序语句

默认情况下,Python的代码的执行顺序是按照从上到下的顺序依次执行的。

这个顺序是不会乱的。

七、条件语句

条件语句能够表达“如果...否则...”这样的语义。这构成了计算机中基础的逻辑判定

条件语句也叫做分支语句,表示了接下来的逻辑可能有几种走向。

1.语法格式

Python中使用if-else关键字表示条件语句。

1.1 if

if something
    do_something1
    do_something2
next_something

如果条件成立,则执行1、2操作;

如果条件不成立,则不执行1、2操作。

无论条件是否成立,next_something都会执行。

1.2 if-else

if expression:
    do_something1
else:
    do_something2

如果条件成立,则执行1操作;

如果条件不成立,则执行2操作。

1.3 if-elif-else

if expression1:
    do_something1
elif expression2:
    do_something2
else:
    do_something3

如果条件1成立,则执行1操作;

如果条件1不成立且条件2成立,则执行2操作;

如果条件1、2都不成立,则执行3操作。


注意事项:

  • if 后面的条件表达式,没有(),以:作为结尾;

  • if/else 命中条件后要执行的“语句块”,使用缩进(一般是4个空格或者1个Tab)来表示,而不是 { };

  • 对于多条件分支,不是写作else if,而是elif。

  • 对于非法情况的判定,也是非常必要的。


示例:

choice = input("输入1表示认真学习,输入2表示躺平摆烂:")
if choice == "1":
    print("你能找到好工作")
elif choice == "2":
    print("你可能毕业就失业了")
else:
    print("您的输入有误")

2.缩进和代码块

a = input("请输入一个整数:")
if a == '1':
    print("aaaaa")
print("bbbbb")

# 1 → aaaaa bbbbb
# 2 → bbbbb
  • 在Python中,缩进表示代码块。在if,else,elif,while,for......需要跟上代码块的部分,都是需要使用缩进来表示的。在C++/Java中,对于代码缩进是没有强制要求的。

  • Python中的代码块还可以嵌套:当有多级条件嵌套的时候,当前的语句输入哪个代码块,完全取决于缩进的级别。

    a = input("请输入第一个整数:")
    b = input("请输入第二个整数:")
    if a == '1':
        print("aaaaa")
        if b == '2':
            print("bbbbb")
    print("ccccc")
    
    # 1 2 → aaaaa bbbbb ccccc
    

3.练习

3.1 判断一个数的奇偶性

a = int(input("请输入一个数字:"))
if a % 2 == 0:
    print(f"{a}是偶数")
else:
    print(f"{a}是奇数")

这段代码在C++/Java中对于负奇数的判断是不行的(取余2后结果为-1),但Python中可以(取余2后结果为1)。

3.2 判断一个数是正数还是负数

a = int(input("请输入一个整数:"))
if a < 0:
    print("负数")
elif a == 0:
    print('0')
else:
    print("正数")

3.3 判断是否是闰年

a = int(input("请输入一个年份:"))
if (a % 4 == 0 and a % 100 != 0) or (a % 400 == 0):
    print(f"{a}年是闰年")
else:
    print(f"{a}年是平年")

4.空语句

如果什么都不想做,就写一个 pass 语句占位,不能什么也不写,不然不符合Python语法结构。

a = input()
if a != '1':
    pass
else:
    print('hello')

八、循环语句

1.while 循环

基本语法格式:

while 条件:
    循环体

条件为真,则执行循环体代码。条件为假,则结束循环。

循环三要素:

  1. 循环变量的初始值

  2. 循环的判定条件

  3. 循环变量的更新语句


示例:

# 打印1-10
num = 1
while num <= 10:
    print(num)
    num += 1
# 计算1-100的和
num = 1
sum = 0
while num <= 100:
    sum += num
    num += 1
print(sum)# 5050
# 求5的阶乘
num = 5
fac = 1
while num > 0:
    fac *= num
    num -= 1
print(f"5!={fac}")
# 求1!+2!+3!+4!+5!
num = 1
sum = 0
while num <= 5:
    i = 1
    fac = 1
    while i <= num:
        fac *= i
        i += 1
    sum += fac
    num += 1
print(f"1! + 2! + 3! + 4! + 5! = {sum}")# 153

死循环:由于忘记写循环变量的更新语句(如上述num += 1),循环就会一直执行,停不下来了,直到手动强制结束程序。(常用于服务器)

死循环有些时候是bug,有的时候不是bug。

2.for 循环

基本语法格式:

for 循环变量 in 可迭代对象:
    循环体

可迭代对象:特殊的变量。内部包含了许多其他的值。

  • range是一个内建函数,起到的效果就是得到一个“可迭代对象”。这个可迭代对象中就包含了一系列的整数。

  • range(beg , end) ==> [beg , end) :前闭后开区间

  • range还提供了第三个参数,表示“步长”,默认的步长是1。


示例:

# 打印1-10
for i in range(1 , 11):
    print(i)
# 打印2 4 6 8 10
for i in range(2 , 12 , 2):
    print(i)
# 打印10-1
for i in range(10 , 0 , -1):
    print(i)
# 计算1+2+3+...+100
sum = 0
for i in range(1 , 101):
    sum += i
print(sum)# 5050

# 当前有个问题,sum也是一个内建函数。咱们自己定义的变量和内建函数冲突了,
# 虽然不影响代码运行,但后面无法使用内建函数sum了。
# 此时可以这样解决:
# 光标放在sum上,按shift+F6,改变变量名。

3.continue

continue立即结束本次循环,进入下次循环。

for i in range(1,6):
    #发现第3个包子有一只虫子,继续吃下一个包子
    if i == 3:
        continue
    print(f"吃第{i}个包子")

4.break

break立即结束整个循环。

示例1:

for j in range(1,6):
    #发现第3个包子有半只虫子,后面也没心思吃了
    if j == 3:
        break
    print(f"吃第{j}个包子")

示例2:让用户输入一些数字,求这些数字的平均值。

theSum = 0
count = 0
while True:
    num = input("请输入一个数字(分号表示结束):")
    if num == ';':
        break
    num = float(num)
    theSum += num
    count += 1
print(f"平均值为{theSum / count}")

# 请输入一个数字(分号表示结束):10.5
# 请输入一个数字(分号表示结束):20.5
# 请输入一个数字(分号表示结束):30.5
# 请输入一个数字(分号表示结束):40.5
# 请输入一个数字(分号表示结束):;
# 平均值为25.5

九、阶段总结(代码案例)

人生重开模拟器

# 人生重开模拟器
import random
import sys
import time

print('+---------------------+')
print('  花有重开日,人无再少年  ')
print('  欢迎来到人生重开模拟器  ')
print('+---------------------+')
# 设置初始属性
# 颜值、体质、智力、家境,总和不能超过20,每一项取值都是1-10之间
while True:
    print('请设置初始属性(可用点数总数为20)')
    face = int(input("请输入颜值(1-10):"))
    strong = int(input("请输入体质(1-10):"))
    IQ = int(input("请输入智力(1-10):"))
    home = int(input("请输入家境(1-10):"))
    # 通过条件语句,对用户输入的属性进行校验检查
    if face < 1 or face > 10:
        print("颜值设置有误!")
        continue
    if strong < 1 or strong > 10:
        print("体质设置有误!")
        continue
    if IQ < 1 or IQ > 10:
        print("智力设置有误!")
        continue
    if home < 1 or home > 10:
        print("家境设置有误!")
        continue
    if face + strong + IQ + home > 20:
        print("总的属性和超过了20,设置有误!")
        continue

    # 如果上述条件都没有被触发,则认为玩家输入的属性是合法的。
    print("初始属性输入完毕!")
    print(f"颜值:{face},体质:{strong},智力:{IQ},家境:{home}")
    break

point = random.randint(1, 6)
# print(f"point = {point}")
if point % 2 == 1:
    gender = 'boy'
    print("你是个男孩")
else:
    gender = 'girl'
    print("你是个女孩")

# 设置角色的出生点
point = random.randint(1, 3)
if home == 10:
    # 第一档
    print("你出生在帝都,你的父母是高官政要")
    home += 1
    face += 1
    IQ += 1
elif 7 <= home <= 9:
    # 第二档
    if point == 1:
        print("你出生在大城市,父母是公务员")
        face += 2
    elif point == 2:
        print("你出生在大城市,父母是企业高管")
        home += 2
    else:
        print("你出生在大城市,父母是大学教授")
        IQ += 2
elif 4 <= home <= 6:
    # 第三档
    if point == 1:
        print("你出生在三线城市,你的父母是医生")
        strong += 1
    elif point == 2:
        print("你出生在镇上,你的父母是老师")
        IQ += 1
    else:
        print("你出生在镇上,你的父母是个体户")
        home += 1
else:
    # 第四档
    if point == 1:
        print("你出生在农村,父母是辛苦劳作的农民")
        strong += 1
        face -= 2
    elif point == 2:
        print("你出生在穷乡僻壤,你的父母是无业游民")
        home -= 1
    else:
        print("你出生在镇上,你的父母感情不和")
        strong -= 1
print(f"颜值:{face},体质:{strong},智力:{IQ},家境:{home}")

# 幼年阶段
for age in range(1, 21):
    info = f'你今年{age}岁,'
    # 生成一个[1,3]的随机整数
    point = random.randint(1,3)
    # 编写各种事件的代码
    # 性别触发事件
    if gender == 'girl' and home <= 3 and point == 1:
        info += '你的家里人重男轻女思想非常严重,你被遗弃了!'
        print(info)
        print('游戏结束!')
        sys.exit(0)
    # 体质触发事件
    # 使用elif是为了一年只能触发一个事件,如果只用if则可能会同时触发多个事件
    elif strong < 6 and point < 3:
        info += '你生了一场病,'
        if home >= 5:
            info += '在父母的悉心照顾下,你康复了!'
            strong += 1
            home -= 1
        else:
            info += '你的父母没精力管你,你的身体状况更糟糕了!'
            strong -= 1
    # 颜值触发的事件
    elif face <= 4 and age >= 7:
        info += '你长得太丑了,别的小朋友不喜欢你。'
        if IQ > 5:
            info += '你决定用学习填充自己!'
            IQ += 1
        else:
            if gender == 'boy':
                info += '你和别的小朋友经常打架!'
                strong += 1
                IQ -= 1
            else:
                info += '你经常被别的小朋友欺负!'
                strong -= 1
    # 智商触发的事件
    elif IQ < 5:
        info += '你看起来傻傻的。'
        if home >= 8 and age >= 6:
            info += '你的父母把你送到更好的学校学习。'
            IQ += 1
        elif 4 <= home <= 7:
            if gender == 'boy':
                info += '你的父母鼓励你多运动,争取成为运动员。'
                strong += 1
            else:
                info += '你的父母鼓励你多打扮自己。'
                face += 1
        else:
            info += '你的父母为此经常吵架。'
            if point == 1:
                strong -= 1
            elif point == 2:
                IQ -= 1
            else:
                pass
    # 健康成长事件
    else:
        info += '你健康成长。'
        if point == 1:
            info += '你看起来更结实了。'
            strong += 1
        elif point == 2:
            info += '你看起来更好看了。'
            face +=1
        else:
            # 无事发生
            pass
    # 打印这一年发生的事情
    print(info)
    print(f"颜值:{face},体质:{strong},智力:{IQ},家境:{home}")
    print('-------------------------------------------------')
    # 为了方便观察,加一个小小的暂停操作
    time.sleep(2)

欢迎在评论区讨论你的学习心得和疑问!如果你觉得这篇文章对你有帮助,别忘了点赞、收藏和分享哦!

更多推荐