Bootstrap

Python基础语法(二)

Python基础语法(二)

顺序语句

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

print("1")
print("2")
print("3")

执行结果一定为"123",而不会出现""321”"或者"132"等。这种按照顺序执行的代码,我们称为顺序语句.这个顺序是很关键的.编程是一件明确无歧义的事情.安排好任务的顺序,计算机才能够正确的进行执行.就好像人生的顺序,是上学,工作,结婚,生子。—旦这里的顺序乱了,就很麻烦。

条件语句

什么是条件语句

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

条件语句也叫做分支语句。

如果 我认真敲代码
	我就很容易找到工作
否则
	我就容易毕业就失业

其中"我认真敲代码"称为条件,如果条件成立(条件为真),则会出现"我就很容易找到工作"这个情况,如果不成立,则会出现"我就容易毕业就失业""这种情况

语法格式

python当中使用if else关键字表示条件语句

(1) if

if expression:
	do_something1
	do_something2
next_something

如果expression值为True,则执行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值为True,则执行do_something1

如果expression值为False,则执行do_something2

(3)if - elif - else

if expression1:
	do_something1
elif expression2:
	do_something2
else:
	do_something3

如果expression1值为True,则执行do_something1

如果expression1值为False,并且expression2为True,则执行do_something2

如果expression1值为False,并且expression2为False,则执行do_something3

注意:

Python中的条件语句写法,和很多编程语言不太—样。

  • if后面的条件表达式,没有()使用,:作为结尾。
  • if / else命中条件后要执行的"语句块",使用缩进(通常是4个空格或者1个tab)来表示,而不是{}。
  • 对于多条件分支,不是写作else if,而是elif(合体了)。

缩进和代码块

代码块指的是—组放在一起执行的代码.
在Python中使用缩进表示代码块,不同级别的缩进,程序的执行效果是不同的。

#代码1
a = input("请输入一个整数:")
if a == "1":
	print(""hel1o"")
    print(""wor 1d"")
#代码2
a = input("请输入一个整数:")
if a == "1"":
	print("he11o")
print("wor1d")

注意上述代码的区别:
在代码1中, print (“world”")有一级缩进,这个语句属于if内的代码块,意味着条件成立,才执行,条件不成立,则不执行。
在代码2中, print (“world”)没有缩进,这个语句是if外部的代码,不属于if内部的代码块。意味着条件无论是否成立,都会执行。另外,代码块内部还可以嵌套代码块。

a = input("请输入第一个整数:")
b = input("请输入第二个整数:")
if a == "1":
	if b == "2":
		print("aaa")
    print ("bbb")
print("ccc")

在python中,缩进表示代码块。在if,else,elif,while,for…需要跟上代码块的部分,都是需要使用缩进来表示的。

两个条件都满足,才会打印aaa,因为打印aaa的语句有两级缩进,相当于是if b== '2’条件内部的代码块.第一个条件满足,就会打印 bbb,因为打印 bbb的语句只有一级缩进,相当于是if a == '1’条件内部的代码块.两个条件即使都不满足,也能打印ccc,因为打印ccc的语句,没有缩进,相当于和两个if都无关~~

空语句 pass

代码示例:输入一个数字,如果数字为1,则打印hello。

a = int(input("请输入一个整数:"))
if a == 1:
	print("he11o")

这个代码也可以等价写成:

a = int(input("请输入一个整数:"))
if a != 1:
	pass
else:
	print("hello")

其中 pass表示空语句,并不会对程序的执行有任何影响,只是占个位置,保持 Python语法格式符合要求,如果代码写作:

a = int(input("请输入一个整数:"))
if a != 1:

else:
	print ("he11o")

程序是不符合Python语法的,会直接报错。

循环语句

有些操作是需要反复执行的,这种就需要使用循环

while循环

基本语法格式

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

打印1-10数字

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

计算1-100的和

sum = 0
num = 1
while num <= 100:
    sum += num
    num += 1
print(f"sum = {sum}")

计算5的阶乘

result = 1
num = 1
while num <= 5:
    result *= num
    num += 1
print(f"result = {result}")

求1! + 2! + 3! + 4! + 5!

sum = 0
num = 1
while num <= 5:
    factorResult = 1
    i = 1
    while i <= num:
        factorResult *= i
        i += 1x 
    sum += factorResult
    num += 1
print(f"sum = {sum}")

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的步长也可以设定成负数。

使用shift + F6可以针对变量进行重命名~会智能的分析咱们的代码,自动的把所有需要修改的名字都统一替换了~

求1-100的和:

sum = 0
for i in range(1,101):
    sum += i
print(sum)

continue

立即结束当前这次循环,进入下次循环

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

break

立即跳出循环

for i in range(1,6):
    if i == 3:
        #发现第三个包子,有半只虫,后面的包子吃不下了
        break
    print(f"吃第 {i} 个包子")
image-20230127173206257

综合案例

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

  1. 游戏开始的时候,设定初始属性:颜值,体质,智力,家境
  2. 开始游戏,随机生成性别和出生点
  3. 针对每一年,都生成人生的经历(依靠一定的随机因素+当前角色的属性)
print("+---------------------------------------------------------------------------+")
print("|   Flowers have a reopening day, and people are no longer young            |")
print("|                                                                           |")
print("|                                                                           |")
print("|            Welcome to the Life Reopening Simulator                        |")
print("|                                                                           |")
print("+---------------------------------------------------------------------------+")

设置初始属性、设置性别、设置出生点

家境 + 随机数

家境10 第一档,带来一些属性加成

家境7-9 第二档,也会带来属性加成

家境4-6 第三档,少数属性加成家境1-3第四档,会扣属性

import random

print("+---------------------------------------------------------------------------+")
print("|   Flowers have a reopening day, and people are no longer young            |")
print("|                                                                           |")
print("|                                                                           |")
print("|            Welcome to the Life Reopening Simulator                        |")
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

# 生成角色的性别
# 使用random.randint(begin,end),就能生成[begin,end]随机整数
point = random.randint(1,6)
# 此处的random是一个python中的模块!
# PyCharm自动导入使用到的模块
if point % 2 == 1:
    gender = 'boy'
    print("你是个男孩")
else:
    gender = 'girl'
    print("你是个女孩")

#设定角色的出生点
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}")

针对每一岁,生成人生经历

根据年龄,把人生经历分成四个阶段:

●幼年阶段[1,10] -->可塑性强

先使用一个循环,按照年龄,从1循环到10,针对每一年,都生成一个随机数[1,3]

根据角色,性别,年龄各种属性,触发各种事件,随机数会对事件的结果造成影响

这里的事件可能会对属性带来变更

每一年执行结束,都打印这一年发生的事件(让每年只发生一个事件)

也可能会遇到夭折的情况,exit函数来结束程序

●青年阶段[11,20]–>求学
●壮年阶段[20,50]–>平稳
●老年阶段50岁以上–>颜值和体质和智力显著退化

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

●幼年阶段可塑性强体质,颜值,智力都会有较快变化
●青年阶段主要是求学,同时父母一 辈会有明显变化,智力和家境会有明显变化.
●壮年阶段相对平稳,属性变化不大,主要是一些随机事件影响到属性.
●老年阶段体质,颜值,智力都会显著退化,并且随着年龄的上升,疾病/死亡的风险逐渐升高.

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

●使用for循环,按照年龄循环起来.
●针对每一年,先掷一次[1, 3]的色子,根据不同的随机数值,来触发不同的事件.
●根据性别,年龄,各种属性.来触发不同的事件.这里都使用if一else的方式来组织.
●不同的事件可能会对属性有正面/负面的影响.
●在每一年的最后,打印这一年遇到的事情.
●如果夭折,则直接sys.exit(0) 退出程序.
●使用time.sleep(1)使程序暂停执行1s,方便观察程序结果.

import random
import sys
import time

print("+---------------------------------------------------------------------------+")
print("|   Flowers have a reopening day, and people are no longer young            |")
print("|                                                                           |")
print("|                                                                           |")
print("|            Welcome to the Life Reopening Simulator                        |")
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

# 生成角色的性别
# 使用random.randint(begin,end),就能生成[begin,end]随机整数
point = random.randint(1,6)
# 此处的random是一个python中的模块!
# PyCharm自动导入使用到的模块
if point % 2 == 1:
    gender = 'boy'
    print("你是个男孩")
else:
    gender = 'girl'
    print("你是个女孩")

#设定角色的出生点
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("------------------------------------------")
    # 暂停1秒
    time.sleep(1)

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;