python 循环案例
1.编写程序实现,输入体重和身高计算BMI值,并同时输出国际和国内的BMI指标建议值
1 height = input('请输入身高(单位米):')
2 weight = input('请输入体重(单位kg):')
3 height = float(height)
4 weight = float(weight)
5 bmi = weight/(height**2)
6 print('BMI数值为:{:.2f}'.format(bmi))
7 wto,dom = '',''
8 if bmi < 18.5:
9 wto,dom = '偏瘦','偏瘦'
10 elif 18.5 <= bmi <24:
11 wto,dom = '正常','正常'
12 elif 24 <= bmi <25:
13 wto,dom = '正常','偏胖'
14 elif 25 <= bmi <28:
15 wto,dom = '偏胖', '偏胖'
16 elif 28 <= bmi < 30:
17 wto,dom = '偏胖','肥胖'
18 else:
19 wto,dom = '肥胖','肥胖'
20 print('BMI指标为:国际{},国内{}'.format(wto,dom))2.编写程序实现,在程序中预设一个0~9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示“遗憾,太大了”,小于预设的数,显示“遗憾,太小了”, 如此循环,直至猜中该数,显示“预测N次,你猜中了!”,其中N是用户输入数字的次数
import random
count = 0 # 记录用户输入次数
i = random.randint(0, 9)
while True:
try:
a = int(input('请输入一个0-9的数字:')) # 用户输入数字
except ValueError:
print('您输入的数据错误!')
else:
count += 1
if a > i:
print('遗憾,您输入的数字太大了!')
elif a < i:
print('遗憾,您输入的数字太小了!')
else:
break
print('预测{}次,您猜中了!'.format(count))3.编写程序实现,用户从键盘输入一行字符,编写一个程序,统计并输出其中英文字符(不考虑中文),数字,空格和其他字符的个数
1 ls = input('请输入一串字符串>>>>:')
2 digit = 0 # 记录数字总数
3 str1 = 0 # 记录字符串总数
4 a = 0 # 记录空格总数
5 n = 0 # 记录其它字符串总数
6
7 for i in ls:
8 if i.isdigit(): # 判断数字
9 digit += 1
10 elif i.isalpha(): # 判断字母
11 str1 += 1
12 elif i.isspace(): # 判断空格
13 a += 1
14 else: # 其他字符
15 n += 1
16 print('“{0}”中字符有:{1}个,数字有:{2}个,空格有{3}个,其它字符有{4}个'.format(ls, str1, digit, a, n))4.使用print函数和循环结构输出如下由*组成的金字塔(可以尝试根据层数动态输出)
1 # 方法1:使用center函数,默认用空格填充
2 a = int(input('请输入层数:'))
3 i = 0
4 while i <= a-1:
5 c = '*' * (2*i+1) # 每层*数
6 print(c.center(2*a-1)) # 设置总居中的宽度,每层打印居中打印*
7 i += 1
8 # 方法2:使用循环方式,先计算出每行需要打印的空格和*,打印出每行数据
9 try:
10 a = int(input('请输入要打印的金字塔层数:'))
11 except ValueError:
12 print('您输入的数据错误!')
13 else:
14 i = 0 # 循环计算
15 for i in range(a):
16 space = (a - 1) - i # 每层左侧需要打印的空格数
17 str1 = 2 * i + 1 # 每层需要打印的*数
18 ls = ' '*space + '*'*str1
19 print(ls)5.使用print函数和循环结构输出如下由*组成的空心的金字塔图形(选做)
1 a = int(input('请输入要打印的金字塔层数:'))
2 for i in range(a):
3 for n in range((a-1)-i): # 打印空格,每行空格数:(a-1)-i
4 print(' ', end='') # end 表示不换行
5 for q in range(2*i+1): # 打印星星,每行*数:2*i+1
6 if q == 0 or q == 2*i or i == a-1: # 判断打印星星位置,在开头,结尾和最后一行打印星星
7 print('*', end='')
8 else:
9 print(' ', end='')
10 print()
11 # 老师的代码
12 n = 7
13
14 for i in range(n):
15 # 计算空格的数量
16 space_num = n-i-1
17 # 计算星星的数量
18 star_num = i*2 + 1
19 if i == 0 or i == n-1:
20 # 第1层后最后一层和实心的一样
21 # 打印对应数量的空格和星星
22 print(' '*space_num + '*'*star_num)
23 else:
24 # 中间层
25 print(' '*space_num + "*" + ' '*(star_num-2)+ '*')6.使用print函数和循环结构输出如下由*组成的菱形
1 #我的代码
2 try:
3 a = int(input('请输入要打印的层数:'))
4 except ValueError:
5 print('您输入的数据错误!')
6 else:
7 i = 0 # 循环计算
8 for i in range(a):
9 space = (a - 1) - i # 每层左侧需要打印的空格数
10 str1 = 2 * i + 1 # 每层需要打印的*数
11 ls = ' '*space + '*'*str1
12 print(ls)
13 for j in range(a):
14 space1 = j+1 # 每层左侧需要打印的空格数
15 str2 = 2*(a-1-j)-1 # 每层需要打印的*数
16 ls = ' ' * space1 + '*' * str2
17 print(ls)
18 #老师的代码
19 # 第一步打印一个n层的金字塔
20 # 多少层
21 n = 7
22
23 for i in range(n):
24 # 计算星星的数量
25 star_num = i*2 + 1
26 # 计算空格的数量
27 space_num = n-i-1
28 # 打印对应数量的空格和星星
29 print(' '*space_num + '*'*star_num)
30 # 下一步打印一个n-1层的倒金字塔
31 for i in range(n-1):
32 # 星星的数量
33 star_num = (n-1-i)*2-1
34 # 打印空格和星星的数量
35 print(' '*(i+1) + '*'*star_num)
















