1.顺序结构
# coding: utf-8
# 顺序结构:从上到下,依次执行
# 赋值运算符的顺序:从右到左
name = "张三"
age = 20
a = b = c = d = 120 # 链式赋值
a,b,c,d = 'room' # 字符串分解赋值
print(a)
print(b)
print(c)
print(d)
# 输入输出语句也是典型的顺序结构
name1 = input("姓名:")
age1 = eval(input("年龄:"))
print(name1)
print(age1)
2.选择结构
# 选择结构:按照条件选择执行不同的代码段
# 单、双、多分支结构可以互相嵌套使用,内层的分支结构作为外层分支结构的语句块使用
print("———————————————— 单分支结构 ————————————————")
'''
单分支if结构:
if 表达式:
语句块
'''
# 表达式的值为True时,才执行语句块
# 表达式的值为False时,跳过语句块,执行后面的代码
num = eval(input("数字:"))
# 使用if语句
# 通过比较运算符计算出来的,结果是布尔值类型
if num == 67839:
print("答对了!")
if num != 67839:
print("答错了!")
n = 89 # 赋值操作
if n % 2: # 98%2的余数是0,0的布尔值是False
print(n,"是奇数")
# 双重否定是肯定
if not n % 2: # 98%2的余数是0,0的布尔值是False,not False的结果是True
print(n,"是偶数")
# 判断一个字符串是否是空字符串
x = input("请输入一个字符串:")
if x: # Python中一切皆为对象,而非空字符串的布尔值为True
print("x是一个非空字符串")
if not x: # 空字符串的布尔值为False, not False的结果就为True
print("x是一个空字符串")
# 表达式也可以是一个单纯的布尔型变量
flag = eval(input("请输入一个布尔类型的值True或False:"))
if flag:
print("flag的值为True")
if not flag:
print("flag的值为False")
# 使用if语句时,如果语句块中只有已经代码,可以将语句块直接写在冒号的后面
a = 199
b = 378
if a > b:
max = a
print(max)
print("—————————————— 双分支结构 ——————————————")
'''
双分支if...else...结构
if 表达式:
语句1
else:
语句2
'''
# 如果表达式的值为True,就执行语句1,否则执行语句2
x = eval(input("号码;"))
if x == 455212:
print("输对了")
else:
print("输错了")
# 使用条件表达式进行简化
result = "输对了" if x == 455212 else "输错了"
print(result)
print("输对了" if x == 455212 else "输错了")
print("—————————————— 多分支结构 ——————————————")
'''
多分支结构
if 表达式1:
语句块1
elif 表达式2:
语句块2
elif 表达式n:
语句块n
else:
语句块n+1
'''
grade = eval(input("成绩:"))
if grade < 0 or grade > 100:
print("成绩错误!")
elif 0 <= grade < 60:
print("不及格")
elif (60 >= grade) and (grade < 70):
print("及格")
elif (70 <= grade) and (grade < 80):
print("中")
elif 80 <= grade < 90:
print("良")
else:
print("优")
print("—————————————————— 嵌套使用 ————————————")
answer = input("吃饭了吗?")
if answer == '吃了':
food = eval(input("吃了什么菜:"))
if food == "炸鸡腿":
print("很美味")
elif food == "烤全羊":
print("听着我也想吃了")
else:
print("下次我要尝尝")
else:
print("还没吃")
print("—————————————————— 多个条件的连接 ——————————")
# 使用and连接多个条件判断
# 只有同时满足多个条件,才能执行if后面的语句块
user = input("用户名;")
pwd = input("密码:")
if user == "张三" and pwd == "xs14":
print("登录成功")
else:
print("用户名或密码错误")
# 使用or连接多个条件判断
# 满足其中一个条件,就能执行if后面的语句块
score = eval(input("请输入成绩:"))
if 60 <= score < 80 or 80 <= score < 100:
print("成绩及格了")
else:
print("成绩不理想")
3.循环结构
# coding: utf-8
# Python中循环结构分为两类;遍历循环结构for、无限循环结构while
print("—————————— 遍历循环结构for ————————————")
'''
遍历循环for结构:
for 循环变量 in 遍历对象:
语句块
for...else...结构:
for 循环变量 in 遍历对象:
语句块1
else:
语句块2
'''
# 遍历字符串
# 通过 for 循环逐个访问字符串 'hello' 中的每个字符
for i in 'hello': # i 是循环变量,它会在每次循环时依次取到字符串中的一个字符
print(i) # 循环体,在每次循环时,i 的值会被传递给 print() 函数
print()
# range()函数:Python中的内置函数,产生一个(n,m)的参数序列,包含n,但不包含m
for i in range(1,11):
# print(i)
if i % 2 == 0:
print(i, "是偶数")
print()
# 计算1-10之间的累加和
s = 0 # 用于存储累加和
for i in range(1,11):
s += i
else:
print(s)
print()
print("—————————— 100到999之间的水仙花数 ——————————")
'''
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 *3
水仙花数 = 个位数的立方 + 十位数的立方 + 百位数的立方
'''
for i in range(100,1000):
a = i % 10 # 个位
b = i // 10 % 10 # 十位
c = i // 100 # 百位
if a ** 3 + b ** 3 + c ** 3 == i :
print(i)
print("—————————— 无限循环结构while ————————————")
'''
无限循环while结构:
while 表达式:
语句块
while...else...结构:
while 表达式:
语句块1
else:
语句块2
while循环的四个步骤:
初始化变量=>条件判断=>语句块=>改变变量
'''
answer = input("今天要上课吗?y/n:") # 初始化变量
while answer == 'y': # 条件判断
print("努力学习!") # 语句块
answer = input("今天要上课吗?y/n:") # 改变变量
# 计算1到100的累加和
s = 0
i = 1 # 初始化变量
while i <= 100: # 条件判断
s += i # 语句块
i += 1 # 改变变量
else:
print(s)
print()
print("———————————— 使用无限循环模拟用户登录 ——————————————")
i = 0 # 初始化变量
while i < 3: # 条件判断
name = input("用户名:") # 语句块
pwd = input("密码:")
if name == '张三' and pwd == '123456':
print("正在登录中")
i = 8 # 改变变量
else:
if i < 2:
print("用户名或密码不正确,您还有", 2 - i, "次机会")
i += 1 # 改变变量
# 单分支的判断
if i == 3: # 3次都输入错误,循环执行结束
print("三次均输入错误!")