学习Python第二天:Python基础
顺序结构
在初次使用python代码时,我们写的python代码都是一条一条语句按顺序执行,这种代码结构统称为顺序结构。
分支结构
概念
? 在写python代码时,顺序结构并不能解决所有的问题,例如,在设计游戏时,我们就需要设计两个或两个以上的结算结果发送给玩家,这样来决定玩家是继续闯关还是闯关失败重新进入关卡。
? 代码中有多条执行路径,但是只有其中一条会被执行
if语句
? 因此,要进行分支结构就需要使用if 语句,其中的关键字有if 、elif 、else 。这些关键字使用后需要在其后面加冒号(英文状态下的: )
? if :条件语句,通常与else使用,也可单独使用,表示选择分支
? elif :在有if 前提下,使用elif 可以创建更多的分支
? else :否则语句,if 语句下的另一个选择分支,不可单独使用
"""
example01 - 分支结构(选择结构)的例子
代码中有多条执行路径,但是只有其中一条会被执行
admin / Admin123!!
Author:悾格
Date: 2021/7/21
"""
username = input('用户名:')
password = input('密码:')
if username == 'admin' and password == 'Admin123!!':
print('登录成功!')
print('欢迎使用XXX系统!')
print('客服热线:400-800-8800')
else:
print('登录失败!')
print('用户名或密码错误!')
print('程序结束,再见!')
提示:if 和else 的最后面有一个: ,它是用英文输入法输入的冒号;程序中输入的' 、" 、= 、( 、) 等特殊字符,都是在英文输入法状态下输入的。有很多初学者经常不注意这一点,结果运行代码的时候就会遇到很多莫名其妙的错误提示。强烈建议大家在写代码的时候都打开英文输入法(注意是英文输入法而不是中文输入法的英文输入模式),这样可以避免很多不必要的麻烦。
分段函数求值
分支结构可以嵌套使用,但一定要注意嵌套的深度,嵌套深度太深直接影响代码的可读性
代码块:保持相同的缩进的代码就属于同一个代码块
"""
example02 - 分段函数求值
3x - 5, x > 1
f(x) = x + 2, -1 <= x <= 1
5x + 3, x < -1
Author:悾格
Date: 2021/7/21
"""
x = float(input('x = '))
if x > 1:
y = 3 * x - 5
elif x >= -1:
y = x + 2
else:
y = 5 * x + 3
print(f'f(x) = {y}')
例子
"""
test01 - 个人所得税
example04
Author:悾格
Date: 2021/7/21
"""
x = float(input('本月总收入:'))
y = float(input('五险一金的扣除金额:'))
E = x - y
i = 0
if 0 < E <= 3500:
i = 0
T = 0
A = E
elif E <= 5000:
i = E - 3500
T = i * 0.03 - 0
A = E - T
elif E <= 8000:
i = E - 3500
T = i * 0.10 - 105
A = E - T
elif E <= 12500:
i = E - 3500
T = i * 0.20 - 555
A = E - T
elif E <= 38500:
i = E - 3500
T = i * 0.25 - 1005
A = E - T
elif E <= 58500:
i = E - 3500
T = i * 0.30 - 2755
A = E - T
elif E <= 83500:
i = E - 3500
T = i * 0.35 - 5505
A = E - T
else:
i = E - 3500
T = i * 0.45 - 13505
A = E - T
print(f'应纳税款:{T:.2f}')
print(f'税后收入:{A:.2f}')
"""
test02 - 1.实现英制单位与公制单位的双向转换(英寸与厘米的转换)
Author:悾格
Date: 2021/7/21
"""
x = float(input('输入一个值:'))
c = str(input('输入单位(英寸或厘米):'))
if '英寸' in c:
y = x * 2.54
print(f'{x}英寸 = {y:.2f}厘米')
elif '厘米' in c:
y = x / 2.54
print(f'{x}厘米 = {y:.2f}英寸')
循环结构
#### 应用场景
? 在写程序时,一定会遇到需要重复运行的代码,例如,我们在需要重复打印一串字符hello,world! 时,就需要重复输入代码,会增加代码的容量,所以在这里我们就可以使用重复结构,在结构中嵌套该语句,就可以得到我们需要的打印数量。
for in 循环
? 如果明确循环执行的次数,就可以使用for in 循环.
例1,求1到100的和
x = 0
for i in range(1, 101):
x += i
print(x)
range(101) :可以用来产生0到100范围的整数,需要注意的是取不到101。range(1, 101) :可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间。range(1, 101, 2) :可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值。range(100, 0, -2) :可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值。
例2,求1到100之间的偶数和
x = 0
for i in range(1, 100):
if i % 2 == 0:
x += i
print(x)
while 循环
? 如果不明确循环执行的次数,就可以使用while 循环.
? while 循环通过一个能够产生或转换出bool 值的表达式来控制循环,表达式的值为True 则继续循环;表达式的值为False 则结束循环。
例1,猜数字游戏,规则:
? 计算机出一个1到100之间的随机数,玩家输入自己猜的数字,计算机给出对应的提示信息(大一点、小一点或猜对了),如果玩家猜中了数字,计算机提示用户一共猜了多少次,游戏结束,否则游戏继续。
import random
answer = random.randint(1, 100)
counter = 0
while True:
counter += 1
number = int(input('请输入: '))
if number < answer:
print('大一点')
elif number > answer:
print('小一点')
else:
print('恭喜你猜对了!')
break
print(f'你总共猜了{counter}次')
break 和continue
上面的代码中使用while True 构造了一个条件恒成立的循环,也就意味着如果不做特殊处理,循环是不会结束的,这也就是常说的“死循环”。为了在用户猜中数字时能够退出循环结构,我们使用了break 关键字,它的作用是提前结束循环。需要注意的是,break 只能终止它所在的那个循环,这一点在使用嵌套循环结构时需要引起注意,下面的例子我们会讲到什么是嵌套的循环结构。除了break 之外,还有另一个关键字是continue ,它可以用来放弃本次循环后续的代码直接让循环进入下一轮。
例子
"""
test03 - 3或5 的倍数求和
Author:悾格
Date: 2021/7/21
"""
total = 0
for i in range(1, 101):
if i % 3 == 0 or i % 5 == 0:
total += i
print(i, total)
"""
test04 - 输出1-10,以及它们的平方、立方和N的N次方
1 1 1 1
2 4 8 4
3 9 27 27
4 16 64 256
Author:悾格
Date: 2021/7/21
"""
print('N'.ljust(10), end='')
print('N^2'.ljust(10), end='')
print('N^3'.ljust(10), end='')
print('N^N'.ljust(10))
for i in range(1, 11):
x1 = i
x2 = i ** 2
x3 = i ** 3
xn = i ** i
print(f'{x1:<10d}{x2:<10d}{x3:<10d}{xn:<10d}')
"""
test05 - 输入一个非负整数N, 计算N!
N! = N * (N - 1) * (N - 2) * ... * 2 * 1
Author:悾格
Date: 2021/7/21
"""
N = int(input('输入非负整数:'))
y = 1
for i in range(0, N):
i += 1
y *= i
print(i, y)
n = int(input('n = '))
total = 1
for i in range(2, n + 1):
total *= i
print(f'{n}! = {total}')
总结
- 学会了简单的使用分支结构与循环结构中的
if 语句、for in 语句以及while 语句 - 学习代码需要的是思维方式,我的思维比较缓慢,有点理解不过来,希望能够有所改进
- 在听基础课时,还是能够跟上老师的,但是当在独立写代码时,往往最简单的代码思维,我却想不过来,有点难受
|