思路:
- 先不考虑编程序,如果让你手动完成这些任务你怎么做?
- 把上面你想到的步骤拆分成不能再拆分的小步骤
- 想办法用程序去完成每个小步骤
1 计算 BMI值
- 编写程序实现,输入体重和身高计算BMI值,并根据BMI值同时输出国际和国内的BMI分类指标建议值
1.接收用户输入体重 .
2.接收用户输入身高
3. 转换类型
4. 计算BMI值并打印
5. 判断所属的区间
6.输出对应区间的评价
weight = input('请输入你的体重(kg)>>>:')
height = input('请输入你的身高(m)>>>:')
# 转换数据类型
weight = float(weight)
height = float(height)
BMI = weight / (height ** 2)
print('BMI为{:.2f}'.format(BMI))
# 判断区间
wto, dom = '', '' # wto,dom = 国际的,国内的
if BMI < 18.5:
wto, dom = '偏瘦', '偏瘦'
elif 18.5 <= BMI < 24:
wto, dom = '正常', '正常'
elif 24 <= BMI < 25:
wto, dom = '正常', '偏胖'
elif 25 <= BMI < 28:
wto, dom = '偏胖', '偏胖'
elif 28 <= BMI < 30:
wto, dom = '偏胖', '肥胖'
else:
wto, dom = '肥胖', '肥胖'
print('BMI指标为: 国际{},国内{}'.format(wto, dom))
2.
编写程序实现,在程序中预设一个0~9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示“遗憾,太大了”,小于预设的数,显示“遗憾,太小了”,如此循环,直至猜中该数,显示“预测N次,你猜中了!”,其中N是用户输入数字的次数。
提示:使用while无限循环,当猜中时break
思路:
- 设置一个0-9之间的幸运数字
- 猜
- 给出评价,大,小,对,如果猜对了,游戏结束
- 重复2,3
lucky = 6
times = 1
while True:
guess = input('请输入0-9之间的整数>>>:')
guess = int(guess)
if guess < lucky:
print('遗憾,太小了')
elif guess > lucky:
print('遗憾,太大了')
else:
print('预测{}次,终于猜对啦!'.format(times))
break
times += 1
3
3.编写程序实现,用户从键盘输入一行字符,,统计并输出其中英文字符(不考虑中文),数字,空格和其他字符的个数。
提示:遍历字符串,通过字符串方法判断字符类型,然后统计
思路
1.编写程序实现,用户从键盘输入一行字符
2.统计并输出其中英文字符(不考虑中文),数字,空格和其他字符的个数。
content = input('请输入任意内容>>>:')
char_num = 0
digit_num = 0
blank_num = 0
other_num = 0
for i in content:
if i.isalpha():
char_num += 1
elif i.isdigit():
digit_num += 1
elif i.isspace():
blank_num += 1
else:
other_num += 1
print('您输入了{}个字母,{}个数字,{}个空格,{}个其他字符'.format(char_num, digit_num, blank_num, other_num))
4
使用print函数和循环结构输出如下由*组成的金字塔(可以尝试根据层数动态输出)
思路:
- 先写死 :转换为四层
- 计算出每层要打印的空格的个数和星号的个数
- 根据空格和星号的个数打印
我们可以先用最简单粗暴的方法把它写出来
print(' *') # 3个空格 1个星号
print(' ***') # 2 3
print(' *****') # 1 5
print('*******') # 0 7
for i in range(4):
# 计算空格的个数
space_num = 4 - i - 1
# 计算星星的个数
star_num = i * 2 + 1
print(space_num * ' ' + star_num * '*')
那么怎么去动态输出金字塔呢?
n = 7
for i in range(n):
# 计算空格的个数
space_num = n - i - 1
# 计算星星的个数
star_num = i * 2 + 1
print(space_num * ' ' + star_num * '*')
5
使用print函数和循环结构输出如下由星号组成的空心金字塔
思路:还是去计算每行的空格和*的个数
第一层和最后的一层与实心金字塔一致
第2层到第n-1层,保留第一个和最后一个星号,中间的部分用空格代替。
# 多少层
n = 7
for i in range(n):
# 计算空格的数量
space_num = n-i-1
# 计算星星的数量
star_num = i*2 + 1
if i == 0 or i == n-1:
# 第1层后最后一层和实心的一样
# 打印对应数量的空格和星星
print(' '*space_num + '*'*star_num)
else:
# 中间层
print(' '*space_num + "*" + ' '*(star_num-2)+ '*')
6
使用print函数和循环结构输出由如下由*组成的菱型
思路:
拆分任务,上下两个部分
上面就是一个实心金字塔
下面就是一个倒的金字塔
计算,每层的星号和空格的数量。
# 第一步打印一个n层的金字塔
# 多少层
n = 7
for i in range(n):
# 计算星星的数量
star_num = i*2 + 1
# 计算空格的数量
space_num = n-i-1
# 打印对应数量的空格和星星
print(' '*space_num + '*'*star_num)
# 下一步打印一个n-1层的倒金字塔
for i in range(n-1):
# 星星的数量
star_num = (n-1-i)*2-1
# 打印空格和星星的数量
print(' '*(i+1) + '*'*star_num)
7
输出九九乘法表,格式如下:(每项数据之间空一个Tab键,可以使用’\t‘)
for i in range(1, 10):
for j in range(1, i + 1):
print('{}*{}={}'.format(j, i, j * i), end='\t')
print()
for i in range(1, 10):
content = ''
for j in range(1, i + 1):
content += '{}*{}={}\t'.format(j, i, j * i)
print(content + '\n')