Python(一)

本文最后更新于:2024年5月18日 下午

Python语言基础-流程控制

Python语言的基础流程控制包括条件语句(if语句)、循环语句(for循环和while循环)以及跳转语句(break、continue和return语句)。即:

  1. 条件语句(if语句):if语句用于根据条件执行代码块。它可以包含一个或多个条件以及相应的代码块。Python使用缩进来表示代码块。
1
2
3
4
5
6
if condition1:
# 如果条件1为真,则执行这里的代码
elif condition2:
# 如果条件2为真,则执行这里的代码
else:
# 如果以上条件都不满足,则执行这里的代码
  1. 循环语句
  • for循环:用于迭代可迭代对象(如列表、元组、字典等)中的元素。
1
2
for item in iterable:
# 对每个元素执行的代码
  • while循环:在条件为真时重复执行代码块,直到条件为假为止。
1
2
while condition:
# 在条件为真时执行的代码
  1. 跳转语句
    • break语句:用于跳出循环,即使循环条件没有变为False。
    • continue语句:用于跳过循环体中的剩余代码,继续下一次循环。
    • return语句:用于从函数中返回值,并结束函数的执行。

这些是Python中基础的流程控制结构,它们可以帮助你编写更加灵活和功能强大的程序。

some demos:

1.计算平均成绩代码:

1
2
3
4
5
6
7
8
9
10
11
total=0;ave=0;count=0;
score=int(input("请输入学生英语成绩:"))
while score != -1:
total=total+score
count=count+1
score=int(input("请输入学生英语成绩:"))
if count != 0:
average = total / count # 如果count为0时,这里会导致ZeroDivisionError,可以加上判断条件避免除零错误-1
print("录入学生英语成绩 %d 份,学生英语总成绩 %d,平均成绩 %4.2f." % (count, total, average))
else:
print("没有录入学生英语成绩。")

代码逻辑:首先输入第一个学生的成绩然后进入while循环,输入完所有数据后输入-1跳出循环,计算并输出结果

优化:average = total / count 后加上判断条件避免除零错误-1

2.列表输出代码:

1
2
3
4
5
universities = ['哈佛大学','斯坦福大学','剑桥大学','麻省理工学院','加州大学-伯克利','普林\
斯顿大学','牛津大学','哥伦比亚大学','加州理工学院','芝加哥大学']
print("2017《Times》世界大学排名前3的大学是:")
for i in range(3):
print(str(i+1)+".",universities[i])

代码逻辑:首先定义了一个包含了若干大学名称的列表,然后通过一个循环打印出了这个列表中前6个元素(大学名称),每个元素前面带有相应的排名

3.猜数字大小代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import random
key = random.randint(1,100)
print('------猜数字游戏开始!------')
count = 0
x= int(input('请输入数字:'))
while True:
# 检查输入是否为数字
if not x.isdigit():
print('请输入一个有效的数字!')
continue
count = count + 1
if x > key:
print('您猜的数字大了!')
elif x < key:
print('您猜的数字小了!')
else:
print('恭喜您,猜对了!')
break
if count >= 5:
print('很遗憾,您没猜中!生成数字是:%d.'%key)
break
x=int(input("请输入数字:"))

4.斐波那契数列代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
n1=1
n2=1
count=2
print("斐波那契数列前10项为:",end=" ")
print(n1,n2,end=" ")
while True:
if count>=10:
break
nth=n1+n2
print(nth,end=" ")
n1=n2
n2=nth
count+=1

代码逻辑:首先定义了 n1=1、n2=1、count=2,然后使用 print() 函数输出前两项的值,并设置 end=” “,使得输出不换行而是在同一行显示。接着进入一个 while 的循环,每次循环计算下一个斐波那契数,并输出该数,然后更新 n1、n2 的值,同时 count 加一,直到 count 达到 10 时退出循环.

OR:

1
2
3
4
5
6
7
8
def fibonacci(n):
fib_seq = [0, 1] # 初始化斐波那契数列的前两个数字
for i in range(2, n): # 生成斐波那契数列的第三个数字开始的前 n 个数字
fib_seq.append(fib_seq[-1] + fib_seq[-2]) # 计算下一个斐波那契数并添加到数列中
return fib_seq

Fib_seq = fibonacci(50) # 调用 Fibonacci 函数生成斐波那契数列的前 50 位数字
print("斐波那契数列的前 50 位数字:", Fib_seq)

5.模拟自动饮料机代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import sys

投币 = int(input("请投币:"))
while True:
if 投币 == 0:
print("叮咚:设备停止工作!")
break;
elif 投币 == 1:
叮咚 = "冰露纯净水"
elif 投币 == 2:
叮咚 = "农夫山泉矿泉水"
elif 投币 == 3:
叮咚 = "冰红茶"
elif 投币 == 4:
叮咚 = "脉动"
elif 投币 == 5:
叮咚 = "红牛"
else:
叮咚 = "投币错误!请重新投币..."
print("叮咚:", 叮咚)
投币 = int(input("请投币:"))

代码逻辑:使用int(input(“请投币:”))语句,提示用户输入投币金额,并将输入的字符串转换为整数。使用while True:建立了一个无限循环,直到用户选择停止购买或投币金额为0时才会退出循环。 根据用户输入的投币金额,使用if-elif-else语句进行条件判断,确定对应的饮料,并输出相应信息。

6.数列求和代码:

1
2
3
4
5
6
7
8
i = 1; n = 10; sum = 0
while i <= n:
if i % 2 == 1:
i = i + 1
continue
sum = sum + i
i = i + 1
print("sum=",sum)

代码逻辑:计算从1到10(包括1和10)之间所有偶数的和。continue 语句是关键,它确保了只有偶数会被加到 sum 变量中,而奇数则会被跳过。

优化:①变量名 sum 覆盖了 Python 内置函数 sum(),最好避免使用内置函数名作为变量名。

②i 的更新在两个地方出现了,可以简化为循环的 for 形式。

1
2
3
4
5
n = 10
total_sum = 0
for i in range(2, n + 1, 2):
total_sum += i
print("sum =", total_sum)

7.输出对角线元素为1 的4 行4 列矩阵代码:

1
2
3
4
5
6
7
for i in range(1,5):
for j in range(1,5):
if i==j or i+j==5:
print("1",end=' ')
else:
print("0",end=' ')
print()

代码逻辑;嵌套循环,在内层循环中,通过判断条件来确定当前位置应该打印1还是0:若当前位置位于主对角线(i == j)或副对角线(i + j == 5),则打印1。否则,打印0。

8.通过for 循环打印99 乘法表代码:

1
2
3
4
5
for i in range(1,10):
for j in range(1,i+1):
total=i*j
print(f"{j}*{i}={i*j}",end=' ')
print()

代码逻辑:使用两层嵌套的 for 循环。外层循环控制行数(从1到9),内层循环控制每行中的列数(也是从1到行号)。最后使用 f-string 格式化字符串打印结果。

11.打印如下所示的菱形代码:

1
2
3
4
5
6
7
# 打印上半部分
for i in range(1, 5): # 控制行数,上半部分有4行
print(" " * (4 - i) + "*" * (2 * i - 1)) # 打印空格和星号,构成菱形的每一行

# 打印下半部分
for i in range(3, 0, -1): # 控制行数,下半部分有3行
print(" " * (4 - i) + "*" * (2 * i - 1)) # 打印空格和星号,构成菱形的每一行

代码逻辑:

上半部分:使用for循环迭代从1到4的范围,控制菱形上半部分的行数。在每一行中,通过” “(4-i)打印一定数量的空格,使得菱形居中对齐。使用 ““ * (2 * i - 1) 打印一定数量的星号,构成菱形上半部分的每一行。

下半部分:使用 for 循环迭代从3到1的范围(步长为-1),控制菱形下半部分的行数。在每一行中,同样通过 “ “ * (4 - i) 打印一定数量的空格,使得菱形居中对齐。使用 “*” * (2 * i - 1) 打印一定数量的星号,构成菱形下半部分的每一行。

结果:

小记:打牢基础!!!

Python 的流程控制对于控制程序执行流程非常重要。在学习 Python 的流程控制时,对于条件语句 (if-elif-else)、循环语句 (for、while)、以及控制语句 (break、continue) 等基本知识的掌握十分重要。在编写代码时,合理运用这些流程控制结构可以让代码更加清晰、简洁,同时实现不同的逻辑要求。同时,准确理解语句块的缩进在 Python 中尤为重要,因为它决定了哪些语句属于同一个语句块,也能让我们更好了解代码逻辑。同时,在学习这一内容时,我认为对于基础语句的规则和使用场景的理解需要着重学习。


Python(一)
https://forever0823.github.io/2024/04/17/Python语言基础-流程控制/
作者
Alan
发布于
2024年4月17日
许可协议