循环控制器(if、while)

1.编写程序实现,输入体重和身高计算BMI值,并同时输出国际和国内的BMI指标建议值

height = input('请输入身高(单位米):')
weight = input('请输入体重(单位kg):')
height = float(height)
weight = float(weight)
bmi = weight/(height**2)
print('BMI数值为:{:.2f}'.format(bmi))
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是用户输入数字的次数

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.编写程序实现,用户从键盘输入一行字符,编写一个程序,统计并输出其中英文字符(不考虑中文),数字,空格和其他字符的个数

ls = input('请输入一串字符串>>>>:')
digit = 0  # 记录数字总数
str1 = 0  # 记录字符串总数
a = 0  # 记录空格总数
n = 0  # 记录其它字符串总数

for i in ls:
    if i.isdigit():  # 判断数字
        digit += 1
    elif i.isalpha():  # 判断字母
        str1 += 1
    elif i.isspace():  # 判断空格
        a += 1
    else:  # 其他字符
        n += 1
print('“{0}”中字符有:{1}个,数字有:{2}个,空格有{3}个,其它字符有{4}个'.format(ls, str1, digit, a, n))

4.使用print函数和循环结构输出如下由*组成的金字塔(可以尝试根据层数动态输出)

# 方法1:使用center函数,默认用空格填充
a = int(input('请输入层数:'))
i = 0
while i <= a-1:
    c = '*' * (2*i+1)  # 每层*数
    print(c.center(2*a-1))  # 设置总居中的宽度,每层打印居中打印*
    i += 1
# 方法2:使用循环方式,先计算出每行需要打印的空格和*,打印出每行数据
try:
    a = int(input('请输入要打印的金字塔层数:'))
except ValueError:
    print('您输入的数据错误!')
else:
    i = 0  # 循环计算
    for i in range(a):
        space = (a - 1) - i  # 每层左侧需要打印的空格数
        str1 = 2 * i + 1  # 每层需要打印的*数
        ls = ' '*space + '*'*str1
        print(ls)

5.使用print函数和循环结构输出如下由*组成的空心的金字塔图形(选做)

a = int(input('请输入要打印的金字塔层数:'))
for i in range(a):
    for n in range((a-1)-i):  # 打印空格,每行空格数:(a-1)-i
        print(' ', end='')  # end 表示不换行
    for q in range(2*i+1):  # 打印星星,每行*数:2*i+1
        if q == 0 or q == 2*i or i == a-1:  # 判断打印星星位置,在开头,结尾和最后一行打印星星
            print('*', end='')
        else:
            print(' ', end='')
    print()
 # 老师的代码
 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函数和循环结构输出如下由*组成的菱形

#我的代码
try:
    a = int(input('请输入要打印的层数:'))
except ValueError:
    print('您输入的数据错误!')
else:
    i = 0  # 循环计算
    for i in range(a):
        space = (a - 1) - i  # 每层左侧需要打印的空格数
        str1 = 2 * i + 1  # 每层需要打印的*数
        ls = ' '*space + '*'*str1
        print(ls)
    for j in range(a):
        space1 = j+1  # 每层左侧需要打印的空格数
        str2 = 2*(a-1-j)-1  # 每层需要打印的*数
        ls = ' ' * space1 + '*' * str2
        print(ls)
#老师的代码
# 第一步打印一个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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值