python基础语法(2) + 人生重开模拟器的部分实现 ----- 笔记分享

目录:

(1)顺序语句

(2)条件语句

(3)循环语句

1. 顺序语句

默认情况下,python代码执行的顺序是从上到下一次进行的

2. 条件语句
2.1 语法格式

(1) if

if expression:
    do_something1
    do_something2
next_something

如果expression为Ture,则执行 do_something1,do_something2 ,next_something

如果expression为False,则只执行next_something,不执行do_something1,do_something2

(2)if-else

if expression:
    do_something1
else:
    do_something2

如果expression为Ture,则执行 do_something1

如果expression为False,则执行do_something2

(3)if-elif-else

if expression1:
    do_something1
elif expression2:
    do_something2
else:
    do_something3

不另做解释;

2.2 缩进和代码块

代码块值得是一组放在一起执行的代码

在python中使用缩进表示代码块,不同级别的缩进,程序的执行效果是不同的

可以理解为C语言中的{}的作用

2.3 空语句pass

pass表示空语句,并不会对程序的执行有任何的影响,只是战歌位置,保持python语法格式符合要求

a = int(input("输入一个数字"))
if a != 1:
    pass
else:
    print("damn it")
3. 循环语句
3.1 while循环

基本语法格式

while 条件:
    循环体
  • 条件为真,则执行循环体代码

  • 条件为假,则结束循环

代码示例:打印1-10的整数

num = 1
while num <= 10:
    print(num)
    num += 1

代码示例:打印1-100的和

sum = 0
num = 1
while num <= 100:
    sum += num
    num += 1
print(sum)
3.2 for循环

基本语法格式

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

可迭代对象:是一个特殊的变量~内部包含了很多其他的值

注意:

  • python的for和其他语言不同,没有"初始化语句","循环条件判定语句","循环变量更新语句",而是更加简单

  • 所谓的"可迭代对象",值得是"内部包含多个元素,能一个一个把元素取出来的特殊变量"

代码示例:打印1-10

for i in range(1,11):
    print(i)
  • 使用range函数,能够生成一个可多次额大对象,生成的范围是[1,11),也就是[1,10]

代码实例:打印2,4,6,8,10

for i in range(2,12,2):
    print(i)
  • 通过range函数的第三个参数,可以指定迭代的时候的"步长",也就是一次让循环加"几"

代码示例:打印10-1

for i in range(10,0,-1):
    print(i)
  • range的步长也可以设置成负数

3.3 continue

continue 表示结束这次循环,进入下次循环

代码示例:

for i in range(1,6):
    if i == 3:
        continue
    print(f"吃完第{i}个包子")
3.4 break

break 表示结束整个循环

代码示例:

for i in range(1,6):
    if i == 3:
        break
    print(f"吃完第{i}个包子")

代码示例:输入若干个数字,求平均值,使用"分号"作为结尾

sum = 0
count = 0
while True:
    num = input("请输入数字:")
    if num == ';':
        break
    num = float(num)
    sum += num
    count += 1
print(sum / count)
5. "人生重开模拟器"的实现------综合案例

编程里面的合法和非法指的是否合理,是否有效 !

实现一个简化版本的人生重开模拟器~

1.游戏开始的时候,设定初始属性~

2.开始游戏,随机生成性别和出生点~

3.针对每一年,都生成人生的经历~~(依靠一定的随机因素 + 当前游戏角色的相关属性)

5.1 设置初始属性

在游戏中我们设置四个属性

  • 颜值(face)

  • 体质(strong)

  • 智力(iq)

  • 家境(home)

我们约定好每个属性的范围为[1,10],并且综合不能超过20

如果玩家输入的初始属性不合理,就提示输入有误,重新输入

5.2 设置性别
5.3 设置出生点
5.4 针对每一岁,生成人生经历

按照年龄,把人生阶段分成四个阶段:

  • 幼年阶段[1,10]

  • 青年阶段[11,20]

  • 壮年阶段[21,50]

  • 老年阶段50岁以上

每个阶段都会有不同的精力和事件发生:

  • 幼年阶段可塑性强,体质\颜值\智力都会有较快变化

  • 青年阶段主要是求学,同时父母一辈会有明显变化,智力和家境会有明显变化

  • 壮年阶段相对平稳,属性变化不大,主要是一些随机事件影响到属性

  • 老年阶段体质\颜值\智力都会显著退化,并且随着年龄的上升,疾病/死亡的风险逐渐升高

此处我们以幼年为例,简单实现以下这里的处理逻辑:

  • 使用for循环,按照年龄循环起来

  • 针对每一年,先掷一次[1,3]的色子,根据不同的随机数之,来触发不同的事件

  • 根据性别\年龄等各种属性,来触发不同的事件,这里都是用if - else的方式来实现

  • 不同的事件可能会对属性有正面/负面的影响

  • 在每一年的最后,打印这一年遇到的事情

  • 如果夭折,则直接sys.exit(0) 退出程序

  • 使用time.sleep(1) 使程序暂停执行1s,方便观察程序结果

最终代码如下:

# 人生重开模拟器
import random
import sys
import time
​
print("+------------------------------------------------------------+")
print("|                                                            |")
print("|                   花有重开日,人物在少年                        |")
print("|                                                            |")
print("|                   欢迎来到,人生重开模拟器                       |")
print("|                                                            |")
print("+------------------------------------------------------------+")
​
# 设置属性
# 我们约定好每个属性的范围为[1,10],并且综合不能超过20
​
# 使用循环,使玩家在输入错误的时候,可以重新输入
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 > 10 or face < 1:
        print("颜值属性设置有误")
        continue
    if strong > 10 or strong < 1:
        print("体质属性设置有误")
        continue
    if iq > 10 or iq < 1:
        print("智力属性设置有误")
        continue
    if home > 10 or home < 1:
        print("家境属性设置有误")
        continue
    if face + strong + iq + home > 20:
        print("总的属性和超过了20,也是设置有误!")
        continue
​
    # 如果当前上面的条件都没有被触发,则认为玩家输入的数据是合法的
    # 此时就可以跳出循环结束输入了
    print("初始属性输入完毕!")
    print(f"颜值:{face} , 体质:{strong} , 智力:{iq} , 家境:{home}")
    break
​
# 随机生成角色的性别
# 使用 random.randint(beg,end),就能生成[beg,end]的随机整数
point = random.randint(1,6)
# random.randint
# random 是一个python中的模块!相当于自带的头文件
if point % 2 == 0:
    gender = 'boy'
    print("你是个男孩.")
else:
    gender = 'girl'
    print("你是个女孩.")
​
# 设置角色的出生点
# 为了简单,就直接生成 1-3 的随机数
point = random.randint(1,3)
if home == 10:
    # 第一档
    print('你出生在帝都,你的父母是高官政要.')
    home += 1
    iq += 1
    face += 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,11):
    # 把一整年的打印都整理到一个字符串中,在这一年的结尾统一打印
    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 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:
            # 家境<4
            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(5)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值