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)