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} 个包子")
break
立即跳出循环
for i in range(1,6):
if i == 3:
#发现第三个包子,有半只虫,后面的包子吃不下了
break
print(f"吃第 {i} 个包子")
综合案例
实现一个简化版本的人生重开模拟器
- 游戏开始的时候,设定初始属性:颜值,体质,智力,家境
- 开始游戏,随机生成性别和出生点
- 针对每一年,都生成人生的经历(依靠一定的随机因素+当前角色的属性)
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)