目录
一、程序的流程控制
1、顺序结构是基础
2、选择语句(if...else...)
2.1基本结构
2.2小练习
2.3分支语句(if的三元运算)
3、循环语句(for...)
3.1基础知识
3.2关于else
3.3小练习
3.4range的用法
3.5小练习
4、循环语句(while)
二、练习
# 1、使用while循环 验证用户登录 最多重试3次
# 2、1234567 --》 1,234,567 从键盘接收用户输入的数,判断是不是数,然后对它进行千分位格式
# 3、儿童弹珠游戏
一、程序的流程控制
任何算法(程序)都可以由顺序结构、选择结构、循环结构,这三种基本结构组成来实现,顺序结构是程序的基础
1、顺序结构是基础
顺序结构是按照线性顺序自上而下依次执行的一种运行方式
2、选择语句(if...else...)
2.1基本结构
else不是必须的
可以嵌套,根据缩进配套
if 18 <= age <100:
print("年龄在18到100之间")
if age < 60:
print("祝您上网愉快")
else:
print("注意上网时间安排")
else:
print("不能上网")
2.2小练习
# 计算三角形的面积
# 对输入的边长进行判断
# 边长都大于0 --》条件不满足输出(边长小于0,输入不合法)
# 两边之和小于第三边 --》条件不满足输出(两边之和小于或等于等三边)
import math
a = int(input("请输入第一条边:"))
b = int(input("请输入第二条边:"))
c = int(input("请输入第三条边:"))
if a > 0 and b > 0 and c > 0:
if a + b > c and b + c > a and a + c > b:
p = (a + b + c) / 2
s = math.sqrt(p * (p - a) * (p - b) * (p - c))
print(f"三角形的面积为:{s}")
else:
print("两边之和小于或等于第三边")
else:
print("边长小于0,输入不合法")
执行结果
======1
请输入第一条边:3
请输入第二条边:4
请输入第三条边:5
三角形的面积为:6.0
=====2
请输入第一条边:-1
请输入第二条边:2
请输入第三条边:3
边长小于0,输入不合法
====3
请输入第一条边:1
请输入第二条边:2
请输入第三条边:5
两边之和小于或等于第三边
2.3分支语句(if的三元运算)
a = 10
b = 20
c = a if a > b else b
【练习1】
str1 = input("请输入一个字符串:")
# 1
a = "hello在字符串中" if "hello" in str1 else "hello不在字符串中"
print(a)
# 2
print("hello%s存在字符串中"%('' if 'hello' in str1 else '不'))
【练习2】
username = input("请输入用户名:")
password = input("请输入密码:")
print("登陆成功" if username == 'root' and password == '123456' else "登录失败")
# 执行结果1
请输入用户名:root
请输入密码:123
登录失败
# 执行结果2
请输入用户名:root
请输入密码:123456
登陆成功
3、循环语句(for...)
3.1基础知识
iterable 可迭代对象
continue和break的区别
# for循环
num = 0
for i in 'feng':
num += 1
if num == 2:
# 退出本次循环,开启下一次循环
continue
print(f"第{num}个字符为:{i}")
# if num == 3:
# # 退出当前循环
# break
else:
print("for循环正常退出")
# 执行结果
第1个字符为:f
第3个字符为:n
第4个字符为:g
for循环正常退出
3.2关于else
当正常结束for循环时,执行else。通过break退出不算正常退出
else可有可没有
# for循环
num = 0
for i in 'feng':
num += 1
if num == 2:
# 退出本次循环,开启下一次循环
continue
print(f"第{num}个字符为:{i}")
if num == 3:
# 退出当前循环
break
else:
print("for循环正常退出")
# 执行结果
第1个字符为:f
第3个字符为:n
3.3小练习
输入一个字符串,如果是大写字母就输出1,如果是小写字母就输出0,其他字符原样输出
str1 = ''
str2 = input("请输入一个字符串:")
for i in str2:
if i.islower():
str1 += '0'
elif i.isupper():
str1 += '1'
else:
str1 += i
else:
print(str1)
3.4range的用法
左闭右开
# range(3) -->0,1,2
# range(4,9) 左闭右开-->4,5,6,7,8
# range(4,9, 2) -->468
# for i in range(7):
# print(i, end='')
# for i in range(4, 9):
# print(i, end='')
# for i in range(4, 9, 2):
# print(i, end='')
3.5小练习
小练习===1
# 用户验证登录
# 登陆成功/失败都给予提示
# 最多可尝试3次密码
username = input("请输入用户名:")
if username == 'root':
for i in range(3):
password = input("请输入密码:")
if password == '123456':
print("登录成功")
break
elif i == 2:
print("密码错误超过3次,用户登录失败")
else:
print("登录失败,还有%d次机会" % (2-i))
else:
print("用户名不正确")
小练习===2
# 输入一个字符串,找出出现次数最多的字符
str1 = input("请输入一串字符:")
num = 0
result = ''
for i in str1:
num1 = str1.count(i)
if num1 > num:
num = num1
result = i
print("出现次数最多的字符是:", result)
print("出现次数为:", num)
小练习===3
# 猜数字
# 在程序内定义一个数字,让用户猜
# 检查用户输入的是否为数字
# 键盘接收用户输入,猜对或猜错都给出提示(大/小)
# 最多猜3次
# 给出用户最终猜的结果,及花了几次来猜
result = 19
num = 1
for i in range(3):
userresult0 = input("请输入你猜测的数字(0-50):")
if userresult0.isdigit():
userresult = int(userresult0)
if num <= 3:
if userresult == result:
print(f"恭喜你答对了!,猜测次数为{num}")
break
elif userresult > result:
print(f"很遗憾你猜大了,还有{3-num}次机会")
num += 1
else:
print(f"很遗憾你猜小了,还有{3 - num}次机会")
num += 1
else:
print("输入不合法,请输入数字")
else:
print("猜错次数超过3次,游戏结束")
4、循环语句(while)
二、练习
# 1、使用while循环 验证用户登录 最多重试3次
username = input("请输入用户名:")
passwd = input("请输入密码:")
num = 3
while username != "root" or passwd != "123456":
if num > 1:
print(f"用户名或者密码错误,还剩{num - 1}次机会")
username = input("请输入用户名:")
passwd = input("请输入密码:")
num -= 1
else:
print("重试超过3次,用户登录失败")
break
else:
print("登录成功")
# 2、1234567 --》 1,234,567 从键盘接收用户输入的数,判断是不是数,然后对它进行千分位格式
number = input("请输入一串数字:")
count = 0
result = ''
if number.isdigit():
for i in number[::-1]:
count += 1
result = i + result
if count % 3 == 0 and count != len(number):
result = ',' + result
else:
print('千分位格式为:', result)
else:
print("输入不合法,请输入数字")
--->第二种思路
--->第三种思路
# 3、儿童弹珠游戏
import random
light = ''
for i in range(12):
light = light + str(random.randint(0, 1))
else:
print("亮灯情况:", light)
hoodle = random.randint(1, 12)
print(f"你打到了第{hoodle}个灯")
num = 1
for i in light:
if num == hoodle and i == '1':
print("恭喜你赢了!")
break
num += 1
else:
print("很遗憾你输了~")