阿尔法python 第四章 程序的控制结构

年龄换算

狗是人类的好朋友,一只狗大约可以生存 15 至 20 年,狗狗在 2 岁时,已经成年。为了对狗的年龄有个直观认识,有一个简单的换算办法能将狗的年龄换算为人类的年龄:

狗狗 1 岁时,相当于人类 15 岁,2 岁时相当于人类 24 岁,此后,狗狗每长 1 岁,都相当于人长 4 岁。

用表格罗列一下,像这样:

狗的年龄 人类的年龄
1 15
2 24
3 28
4 32
5 36

请用程序实现

输入狗狗的年龄,计算并输出对应的人类的年龄。

示例 1

输入 输出
3 28

示例 2

输入 输出
6 40
# 请使用 input() 输入狗狗的年龄
year = eval(input())
# 请计算相对人的岁数,并将结果输出
if year == 1:
    print(15)
elif year ==2:
    print(24)
elif year > 2:
    year = 24 + 4*(year-2)
    print(year)
else :
    print("输入错误")

平闰年

如果一个年份可以被 4 整除且不能被 100 整除,或者可以被 400 整除,那么这个年份就是闰年。

请用程序实现

输入一个年份year,判断它是「平年」还是「闰年」。如果是平年,输出common year;如果是闰年,输出leap year

示例 1

输入 输出
2000 leap year

示例 2

输入 输出
1990 common year
# 请使用 input() 输入一个年份 year
year = int(input())

# 请判断这个年份是否为闰年
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    print("leap year")
else:
    print("common year")
   
   

考试评级

请用程序实现
输入一个表示考试成绩score的整数,判断该成绩属于哪个级别,并将判断结果输出。

以下为成绩级别划分:

分数段 级别
0 - 59 E
60 - 69 D
70 - 79 C
80 - 89 B
90 - 100 A

示例 1

输入 输出
94 A

示例 2

输入 输出
56 E
# 请使用 input() 输入考试成绩 score
score = int(input('请输入考试成绩: '))

# 请判断成绩属于哪个级别
if 100 >=score >= 90:
    print("A")
elif 89 >= score >=80:
    print("B")
elif 79 >= score >=70:
    print("C")
elif 69 >= score >=60:
    print("D")
elif 59 >= score >=0:
    print("E")
else:
    print("输入错误")
    

大小写转换

a、b、c、d这样的52个字母(包括大写)在计算机中存储时也要使用二进制数来表示。
标准ASCII码使用7位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,如下图所示,可以看出字母对应大小写的差值为32。

在这里插入图片描述来进行大小写转换吧。

注意:python 中,使用 ord() 函数将 字符 转换成其对应的 ASCII 码;使用chr() 函数将 ASCII 码转换成其对应的 字符。

如:ord('A') 得到结果 65chr(65) 得到结果'A'
请用程序实现

输入一个英文字母char,判断它是「大写字母」还是「小写字母」。如果是大写字母,将其转换为「对应的小写字母」;如果是小写字母,将其转换为「对应的大写字母」;并将转换后的结果输出。
示例 1

输入 输出
A a

示例 2

输入 输出
R r
# 请使用 input() 输入一个英文字母 char
char = input()
# 请实现英文字母的大小写转化
a = ord(char)
if 96 > a > 64:
    a += 32
    print(chr(a))
elif 130 > a >96:
    a -= 32
    print(chr(a))
else:
    print("输入错误")

判断位数并打印各位的值

请用程序实现
输入一个不多于五位的正整数num,求出它是几位数,将结果输出,并将每一位的数字都打印出来。

注意: 位数和每位的数字分两行打印。

示例 1

输入 输出(使用空格分隔同行的多数据输出)
12345
1 2 3 4 5

示例 2

输入 输出(使用空格分隔同行的多数据输出)
567
5 6 7
# 请使用 input() 输入一个不多于五位的正整数 num
num = int(input())
# 请计算这个正整数的位数,并将每一位的数字都打印出来。
w = len(str(num))
a = ['一','二','三','四','五']
print(a[w-1])
for i in range(w):
    print(str(num)[i],end=" ")
# 请使用 input() 输入一个不多于五位的正整数 num
num=int(input())
# 请计算这个正整数的位数,并将每一位的数字都打印出来。
num1=str(num)
num_list=list(num1)
n=len(num1)
if n==1:
    print("一")
    print(num)
elif n==2:
    print("二")
    for i in range(n):
        print(num_list[i],end=" ")
elif n==3:
    print("三")
    for i in range(n):
        print(num_list[i],end=" ")
elif n==4:
    print("四")
    for i in range(n):
        print(num_list[i],end=" ")
          
elif n==5:
    print("五")
    for i in range(n):
        print(num_list[i],end=" ")


回文数

请用程序实现
输入一个五位数,判断它是否是回文数。如果是,输出yes;如果不是,输出no。

注意: 回文数的个位与万位相同,十位与千位相同。
示例 1

输入 输出
12321 yes

示例 2

输入 输出
12345 no
num = str(input())
newnum = num[::-1]
if num == newnum:
    print("yes")
else:
    print("no")


地铁车票

购买地铁车票的规定如下:

乘 1~4 站,3 元/位;
乘 5~9 站,4 元/位;
乘 9 站以上,5 元/位。

请用程序实现

输入乘坐人数(per_num)和乘坐站数(sta_num),计算购买地铁车票需要的总金额,并将计算结果输出。

注意: 如果「乘坐人数」和「乘坐站数」为0或负数,输出error。
示例 1

输入(使用换行分隔多数据输入) 输出
0
1
error

示例 2

输入(使用换行分隔多数据输入) 输出
1
0
error

示例 3

输入(使用换行分隔多数据输入) 输出
2
4
6
# 请使用 input() 输入乘坐的人数 per_num 和站数 sta_num
per_num=int(input())
sta_num=int(input())

# 请判断输入的人数和站数是否正确,计算购买车票的总金额,并将计算结果输出
if (per_num  <= 0 or sta_num <= 0):
    print("error")
else:
    if 1 <= sta_num <= 4:
        pm = 3
    if 5 <= sta_num <= 9:
        pm = 4
    if sta_num > 9:
        pm = 5
    print(pm * per_num)


判断星期

每个星期对应的英语单词都不同,星期一到星期天的单词分别为:monday、tuesday、wednesday、thursday、friday、saturday、sunday。

请用程序实现
输入单词的前两个字符,判断输入的单词是星期几,并输出对应的单词;如果输入的字符不匹配,则输出error。

示例 1

输入 输出
tu tuesday

示例 2

输入 输出
mm error
# 请使用 input() 输入单词的前两个字母 chars
chars = input()

# 请判断输入的是星期几,并输出对应的单词
if chars=="mo":
    print("monday")
elif chars=="tu":
    print("tuesday")
elif chars=="we":
    print("wednesday")
elif chars=="th":
    print("thursday")
elif chars=="fr":
    print("friday")
elif chars=="sa": 
    print("saturday")
elif chars=="su":
    print("sunday")
else:
    print("error")
      


身体质量指数BMI

BMI :Body Mass Index 国际上常用的衡量人体肥胖和健康程度重要标准,主要用于统计分析‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬。BMI 的计算公式为 BMI = 体重(kg) / (身高(m) * 身高(m))。
请用程序实现
获取用户输入的体重和身高值,计算并给出国际和国内的 BMI 分类。

BMI值

‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
(1) 混合计算并给出国际和国内的 BMI 分类;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
(2) 使用input()获得测试用例输入时,不要增加提示字符串。

示例 1

输入 输出
1.68
41
BMI数值为:14.53
BMI指标为:国际’偏瘦’, 国内’偏瘦’

示例 2

输入 输出
1.72
80
BMI数值为:27.04
BMI指标为:国际’偏胖’, 国内’偏胖’
height = eval(input())
weight = eval(input())
bmi = weight / height**2
print("BMI数值为:{:.2f}".format(bmi))
if bmi < 18.5:
    print("BMI指标为:国际'偏瘦',国内'偏瘦'")
elif bmi < 24:
    print("BMI指标为:国际'正常',国内'正常'")
elif bmi < 25:
    print("BMI指标为:国际'正常',国内'偏胖'")
elif bmi < 28:
    print("BMI指标为:国际'偏胖',国内'偏胖'")
elif bmi <30:
    print("BMI指标为:国际'偏胖',国内'肥胖'")
else:
    print("BBMI指标为:国际'肥胖',国内'肥胖'")

height = eval(input())
weight = eval(input())
bmi = weight / pow(height, 2)
print("BMI数值为:{:.2f}".format(bmi))
who, nat = "", ""
if bmi < 18.5:
    who, nat = "偏瘦", "偏瘦"
elif 18.5 <= bmi < 24:
    who, nat = "正常", "正常"
elif 24 <= bmi < 25:
    who, nat = "正常", "偏胖"
elif 25 <= bmi < 28:
    who, nat = "偏胖", "偏胖"
elif 28 <= bmi < 30:
    who, nat = "偏胖", "肥胖"
else:
    who, nat = "肥胖", "肥胖"
print("BMI指标为:国际'{0}',国内'{1}'".format(who, nat))

乞丐

丐帮帮主去天桥乞讨,并把每天乞讨的钱都存起来。设帮主存款初始为 0,且不使用这笔钱。
第一天乞讨了 1 块钱;第二天乞讨了 2 块钱;第三天乞讨了 4 块钱;第四天乞讨了 8 块钱;以此类推。

请用程序实现
输入一个天数day,输出帮主每天的存款余额。

示例 1

输入 输出
3 1
3
7

示例 2

输入 输出
5 1
3
7
15
31
# 请使用 input() 输入一个天数 day
day = int(input("请输入一个天数: "))
 
# 计算帮主这些天的总收入,并将每天的总收入输出
for i in range(1,day+1):
    s = 2**i - 1
    print(s)

水仙花数

"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如 153 = 1³ + 5³ + 3³,所以 153 是一个水仙花数。

请用程序实现
输入一个三位数,找出100~num(含)中的所有水仙花数,并将找出的水仙花数从小到大输出,每行输出1个数

示例 1

输入 输出
200 153

示例 2

输入 输出
400 153
370
371
num = eval(input())
for i in range(100,num+1):
    a = str(i)
    if (pow(eval(a[0]),3) + pow(eval(a[1]),3) + pow(eval(a[-1]),3) == i):
        print(a)
# 请使用 input() 输入一个三位数 num
num = int(input())

# 请找出 100 - num(含) 中的所有水仙花数,并将找出的水仙花数输出
for i in range(100,num+1,1):
    a=i%10
    b=i%100//10
    c=i//100
    n=a*a*a+b*b*b+c*c*c
    if i==n:
        print(i)
   

篮球弹跳

篮球从一定高度向下掉落,每一次弹起的高度,都是前一次高度的一半。一次掉落和一次弹起极为一次弹跳。假设篮球初始高度为10米。

请用程序实现
输入篮球弹跳的次数num,计算num次后篮球所在的高度,并将计算结果输出。

示例 1

输入 输出
5 0.3125

示例 2

输入 输出
3 1.25
# 请使用 input() 输入弹跳的次数 num
num = eval(input('请输入弹跳的次数: '))
height = 10
# 请计算弹跳 num 次后的篮球高度,并将结果输出
for i in range(num):
    height /=  2
print(height)


阶乘

请用程序实现
输入一个正整数num,计算这个正整数的阶乘,并将计算结果输出。

示例 1

输入 输出
5 120

示例 2

输入 输出
10 3628800
# 请使用 input() 输入一个正整数 num
num = int(input())
count = 1
# 请计算这个正整数的阶乘,并将计算结果输出
for i in range(1,num+1):
    count *= i
print(count)



猴子摘桃

一只猴子摘桃子, 第一天摘了两个桃, 以后每天摘的是前一天的两倍还多一个.

请用程序实现
输入一个天数day,计算第day天它摘的个数,并将结果输出。

示例 1

输入 输出
2 5

示例 2

输入 输出
9 767
# 请使用 input() 输入一个天数 day
day = int(input('请输入一个天数: '))
n = 2
# 请计算第 day 天猴子摘的桃子个数,并将结果输出
for i in range(2,day+1):
    n = 2*n + 1
print(n)


冰雹猜想

请用程序实现
输入一个大于1的正整数num; 如果num为偶数, 就将它变为num / 2; 如果num为奇数, 就将它变为3 * num + 1; 直到num为1时停止。并将每一次运算的结果输出。

示例 1

输入 输出
12 6
3
10
5
16
8
4
2
1

示例 2

输入 输出
8 4
2
1
# 请使用 input() 输入一个整数 num
num = int(input("请输入一个整数: "))

# 编写程序验证冰雹
while num != 1:
    if num % 2 == 0:
        num /= 2
        print(int(num))
    else:
        num = num * 3 + 1
        print(int(num))



忽略倍数

请用程序实现
输入一个整数num,循环打印1(含)~num(含)中的整数,如果是3的倍数或5的倍数,则忽略。

示例 1

输入 输出
6 1
2
4

示例 2

输入 输出
11 1
2
4
7
8
11
# 请使用 input() 输入一个整数 num
num = int(input('请输入一个整数: '))
a = 1
# 请打印 1(含) - num(含) 中的整数,如果是 3 的倍数或 5 的倍数,则忽略
for i in range(1, num+1):
    if i % 3 == 0 or i % 5 == 0:
        print(end="")
    else:
        print(i)

素数

「质数」又称素数,有无限个。素数定义为在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的数称为素数。
例如17就是素数,因为它不能被2 - 16的任一整数整除。

请用程序实现: 输入一个大于 1 的整数num,输出1~num(含)中的所有的素数(每行输出1个素数,从小到大排列)。

示例 1

输入 输出
7 2
3
5
7

示例 2

输入 输出
20 2
3
5
7
11
13
17
19
# 请使用 input() 输入一个整数 num
num = int(input('请输入一个整数: '))
# 输出 1 - num(含) 中的所有的素数
for i in range(2,num+1):
    fg=0
    for j in range(2,i-1):
        if i % j == 0:
            fg = 1
            break
    if fg == 0:
        print(i)


输出九九乘法表

大家小时候都背过乘法表,乘法表是有规律的:

1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9

在这里,你需要在循环里面嵌套一个循环:外面的循环控制行数,里面的循环控制每一行算式的个数。

想让算式在同一行输出,可以在 print 指令中加一个参数:

print(1, end=’ ')
print(2)

这样,1 和 2 就打印在同一行上面了:

1 2

使用 print 输出多个数字,输出的内容之间会有空格:

print(1, 2, 3)

它将输出:

1 2 3

如果不想让输出的内容之间有空格,可以使用格式化输出:

print(’%sx%s’%(1, 1))

它将输出:

1x1

它在字符串中使用 %s占位,然后在字符串后面跟着 %(),在 () 中填写需要的内容。

那么接下来,我们就开始吧!
使用小写的英文字母 x 表示数学中的 乘号。(也可以使用 * 表示乘号)
单个等式内部没有空格,等式与等式之间空一个空格。

最终效果如下:

1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9

# 请在此处编写你的程序
# 打印九九乘法表
 
for i in range(1, 10):
    for j in range(1, i+1):
        print('{}x{}={}\t'.format(j, i, i*j), end='')
    print()

随机密码生成

补充编程模板中代码,完成如下功能:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
以整数 17 为随机数种子,获取用户输入整数 N 为长度,产生 3 个长度为 N 位的密码,密码的每位是一个数字。每个密码单独一行输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

注意: 产生密码采用random.randint()函数。

示例

输入 输出
3 634
524
926
#请在...补充代码
import random
def genpwd(length):
    return random.randint(10**(length-1),10**length-1)
length = eval(input())
random.seed(17)
for i in range(3):
    print(genpwd(length))


猜数字

.random() 方法返回随机生成的一个实数,它在 [0,1) 范围内。这个实数是大于等于 0,小于 1 的,也就是说不会随机生成 1。

我们如何使用它呢?看下面的代码:

import random
 #生成一个[0,1)的随机数 
 randomNum = random.random()

那么我们想生成一个在 [0,100) 范围内的随机数呢?当然也是可以的,我们只需要将 random.random() 生成的随机数扩大 100 倍就行了:

import random
# 生成一个[0,100)的随机数
randomNum = random.random() * 100

注意: .random()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
同样,random 模块还有很多的方法,如:random.randint(1, 10) 将返回 1 - 10 之间的整数。
使用 python 实现猜数字游戏,即系统随机生成一个整数,通过input()函数,输入整数,根据系统给出的提示猜数字。

要求:
1.随机生成一个 1 - 100 之间的整数。
2.7 次猜数字的机会,如果没有猜正确,游戏结束。
3.输入字母 q,则退出游戏。

注意: 这不是自动评阅题目,仅用于练习,没有评阅。

运行你的程序,执行效果如下所示:

您只有7次猜数字的机会哦!
这是第1次猜数字
请输入数字:1
您输入的数字太小了,您还有6次机会,请重新输入!
这是第2次猜数字
请输入数字:n
输入的内容必须为整数,请重新输入!
这是第3次猜数字
请输入数字:q
退出游戏!

进一步改进程序

7 次可能太少,改成 10 次的话,如何调整程序?
0 - 100 的数太小了,如果要改为 0 - 1000 怎么调整代码?

# 导入random模块
import random

# 生成随机数,并赋值给num变量
num = random.randint(1, 101)
# 定义 guess_chances 变量,初始化猜的次数
guess_chances = 7
print('您只有7次猜数字的机会哦!')
# 循环输入的次数
for i in range(1, guess_chances + 1):
    print('这是第' + str(i) + '次猜数字')
    str1=input()
    if str1 == "q":
        print("退出游戏!")
        break
    else:
        
        num1=int(str1)
        if num == num1:
            print("您猜对了")
            break
        if num < num1:
            print("您输入的数字太大了,您还有%d次机会,请重新输入!"%(7-i))
        if num > num1:
            print("您输入的数字太小了,您还有%d次机会,请重新输入!"%(7-i))
    
    # 实现对输入数字的判断



圆周率的计算

求解圆周率可以采用蒙特卡罗方法,在一个正方形中撒点,根据在 1/4 圆内点的数量占总撒点数的比例计算圆周率值。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬圆周率
请用程序实现
请以 123 作为随机数种子,获得用户输入的撒点数量,编写程序输出圆周率的值,保留小数点后 6 位。

示例

输入 输出
1024 3.218750
from random import random, seed
DARTS = eval(input())
seed(123)
hits = 0.0
for i in range(DARTS):
    x, y = random(), random()
    dist = pow(x ** 2 + y ** 2, 0.5)
    if dist <= 1.0:
        hits = hits + 1
pi = 4 * (hits/DARTS)
print("{:.6f}".format(pi))

求pi的近似值

输入精度 e,使用格雷戈里公式求 π 的近似值,精确到最后一项的绝对值小于 e.

格雷戈里公式如下:

π/4​ = 1 − 1/3 + 1/5 - 1/7 + 1/9 + ··· + 1/(2 * n - 1)

注意: n从 1 开始.

输入格式:
输入在一行中给出精度 e

输出格式:
对于给定的输入,在一行中输出π的近似值。

示例 1

输入 输出
1 2.666666666666667

注意:1 的绝对值不小于 1,1/3 的绝对值小于 1,所以π = 4 * (1 - 1/3) = 2.666666666666667

示例 2

输入 输出
0.0001 3.1417926135957908
e = float(input())

# 请根据 e 计算 pi 的近似值
sum=0
n=1
sign=-1
sum = sum + sign / (2*n-1)
while abs(sign/(2*n-1))>=e:
    n=n+1
    sign=-sign
    sum=sum+sign/(2*n-1)
count=4*sum
print(count)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章