云计算工坊:python运维专练1 答案
人机交互
竖着输出
描述
Python中字符串可以按单个字符进行索引,第一个字符序号为0,正向递增,编写一个程序,用户输入一个字符串,按每行一个字符的形式进行输出。
输入格式
一个字符串或手机号码
输出格式
每行一个字符进行输出用户输入的字符
输入输出示例
输入 输出 示例 1 Hello H e l l o
代码
my_string = input() # 输入一个字符串 for i in my_string: # 对字符串中的字符进行遍历 print(i) # 逐个输出字符,每个字符以换行符结束
格式化输出
描述
用户输入一个浮点数,用str.format格式化输出,保留3位小数。
输入格式
输入一个浮点数
输出格式
保留小数点后3位的浮点数
输出
输入输出示例 输入 输出 示例 1 3.14159 3.142
代码
#用户输入一个小数,用format格式化输出,保留3位小数 n = float(input()) print("{:.3f}".format(n)) # .3 表示保留小数点后3位 # f 表示浮点数
输出he's a pirate
描述
在两行中分别输出以下两个句子。
he's a pirate She said, "Hurry up."
输入格式
无输入
输出格式
he's a pirate She said, "Hurry up."
输入输出示例
输入 输出 示例 1 he's a pirate She said, "Hurry up."
代码
print("he's a pirate") print('She said, "Hurry up."')
简单数学运算
描述
输入两个整数 a,b,顺序输出加、减和乘法运算的结果。
输入格式
第一行输入整数 a
第二行输入整数 b
输出格式
第一行输出 a + b的结果
第二行输出 a - b 的结果
第三行输出 a * b 的结果
代码
a = int(input()) # 输入转为整数 b = int(input()) # 输入转为整数 print(a + b) print(a - b) print(a * b) # 函数式 def solve(a,b): print(a + b) print(a - b) print(a * b) if __name__ == '__main__': a = int(input()) # 输入转为整数 b = int(input()) # 输入转为整数 solve(a,b) # 调用你定义的函数进行数学运算
简单循环
描述
输入一个整数 n,输出所有小于 n 的非负整数 i 的平方( 0 <= i < n )。
输入格式
输入一个整数 n
输出格式
分 n 行,每行输出一个整数
输入输出示例
输入 输出 示例 1 5 0 1 4 9 16
代码
n = int(input()) # 输入转为整数n for i in range(n): # 将i从0遍历到n print(i * i) # 输出i的平方 # 函数式编程 def loop(n): for i in range(n): # 将i从0遍历到n print(i * i) # 输出i的平方 if __name__ == '__main__': n = int(input()) # 输入转为整数n loop(n) # 调用你定义的loop函数并传入参数n
数值运算
计算矩形面积
描述
用户输入矩形的长和宽,计算其面积并输出。
输入格式
第一行输入一个数字,代表矩形的长
第二行输入一个数字,代表矩形的宽
(输入使用input(),不要增加额外的提示信息)
输出格式
输出矩形的面积,不限定小数位数
输入输出示例
输入 输出 示例 1 5 8 40
代码
#用户输入长和宽,计算矩形的面积 width = eval(input()) # 输入宽 length = eval(input()) # 输入长 area = width * length # 计算面积 print(area) # 输出面积
计算矩形面积结果保留两位小数
描述
用户输入矩形的长和宽,计算其面积,输出时保留2位小数。
输入格式
第一行输入一个正数,作为矩形的长
第二行输入一个正数,作为矩形的宽
输出格式
矩形的面积值,保留2位小数
代码
width = eval(input()) # 输入宽 length = eval(input()) # 输入长 area = width * length # 计算面积 print('{:.2f}'.format(area)) # 格式化输出面积 # .2表示取小数点后2位数字,f表示浮点型
计算多个垫片面积的和
描述
垫片是在一个圆的中心挖去一个半径小一些的同心圆形成的带孔圆片,用户输入垫片的外径、内径和数量,计算多个垫片的面积之和。(圆周率用3.14159,结果保留小数点后2位数字)
输入格式
第一行输入一个正数,作为外径;
第二行输入一个正数,作为内径;
第三行输入一个正整数,作为数量;
输出格式
一个浮点数,多个垫片面积之和
输入输出示例
输入 输出 示例 1 8 5 10 1225.
代码
PI = 3.14159 # 定义Pi值精确度 R = eval(input()) # 输入外径R r = eval(input()) # 输入内径r n = eval(input()) # 输入数量n areaSum = n * (PI * R * R-PI * r * r) # 计算总面积 print('{:.2f}'.format(areaSum)) # 格式化输出
换披萨
描述
披萨的尺寸一般分6-15英寸几种,一英寸约等于2.54厘米,将英寸直径乘以2.54即可得出以厘米为单位的直径。例如6寸披萨,即为6乘以2.54,得出结果为15.24厘米。 然而披萨加工时并不是严格到毫米不差的,考虑到加工过程及无效的披萨边,真正的有效直径需要去掉小数点后面数字。例如6寸披萨的标准直径为15.24厘米,实际有效直径一般为15厘米。
披萨店经常会对顾客说:您订购的某尺寸的披萨卖完了,是否可以更换为多个小尺寸的披萨。例如:您订购的9寸披萨卖完了,可以给您2个6寸的披萨吗?
假设披萨厚度相同,价格与面积成正比,试问一个m英寸的大披萨至少要更换几个n英寸的小披萨,顾客才不吃亏?
输入格式
输入有2行
第一行输入整数m(英寸),代表订购的大披萨;
第二行输入整数n(英寸),代表推荐更换的小披萨;
输出格式
整数,更换小披萨的数量
代码
import math # 导入math模块 m = int(input()) # 输入大披萨数量m n = int(input()) # 输入小披萨数量n areaM = int(m * 2.54)/2 # 计算大披萨面积 areaN = int(n * 2.54)/2 # 计算小披萨面积 num = (areaM*areaM)/(areaN*areaN) # 计算大小披萨面积比值 print(math.ceil(num)) # 格式化输出向上取整 #也可用以下方法处理: # if num > int(num): #当num小数位有有效数字时 # num = int(num) + 1 # print(int(num))
简单循环
用一行代码求和
描述
输入一个正整数 n ,计算从 1 到 n 各数字的和,要求用一行代码实现。
输入
一个正整数 n
输出
一个正整数
代码
# 通过range 函数生成1到输入的数的整数序列 # 通过sum 函数对序列求和 print(sum(range(1,int(input())+1)))
数列求和
描述
用户输入一个小于10的正整数,求1 + 12 + 123 + 1234 + …… 的前n项的和
输入
一个正整数 n(测试数据保证小于10)
输出
数列的和
代码
my_sum,temp = 0, 0 n = int(input()) for i in range(1,n + 1): temp = temp * 10 + i # 每次循环使temp乘10加i my_sum = my_sum + temp # 累加temp赋值给my_sum print(my_sum)
正负交错数列前n项和
描述
1-1/2+2/3-3/5+4/8-5/13+...的前n项和,n由用户输入(n>0),结果用str.format()方法保留小数点后6位数字输出。
输入格式
一个正整数
输出格式
前n项的和
代码
# 分析: # 分子规律为:1,1,2,3,4,5,...,除首个数字外是自然数 # 分母规律为:1,2,3,5,8,13...,除首个数字外,后面每个数是前面两个数的加和 # 符号规律:正负交替 # 项数:1,2,3,...n共n项 # previous, current = 1, 1 # 1 2 1 1 + 1 # previous, current = current, previous + current # previous, current = 1, 2 # 2 3 2 1 + 2 # previous, current = current, previous + current # previous, current = 2, 3 # 3 5 3 2 + 3 # previous, current = current, previous + current # previous, current = 3, 5 # ...... n = int(input()) result = 1 # 首项的值,作为累加初值 sign = -1 # 符号,第二项是负值, previous, current = 1, 1 # 分母数字的初值,从第二项开始符合这个规律 for i in range(1, n): # 从1到n-1遍历n-1次 previous, current = current, previous + current # 下一个数值是前面两个数的加和 result = result + sign * i / current # 注意分子是 i sign = -sign # 改变正负号 print('{:.6f}'.format(result))
简单分支
百分制成绩转换五分制
描述
编写一个学生成绩转换程序,用户输入百分制的学生成绩,成绩大于或等于90的输出为“A”,成绩大于或等于80且小于90的输出为“B”,成绩大于或等于70且小于80的输出为“C”,成绩大于或等于60且小于70的输出为“D”,成绩小于60的输出为“E”
输入格式
输入一个不超过100的正数,代表百分制成绩。
输出格式
A、B、C、D、E中的一个字母,表示五分制的成绩等级
代码
# 用户输入百分制的学生成绩,转换为五分制输出 # 常规做法, 根据分数的范围输出不同的等级 score = int(input()) if 90 <= score <= 100: print('A') elif 80 <= score <= 90: print('B') elif 70 <= score <= 80: print('C') elif 60 <= score <= 70: print('D') elif 0 <= score <= 60: print('E') else: print('data error!') # 非常规做法 # score = 'EEEEEEDCBAA' # print(score[int(input()) // 10])
判断奇偶数
描述
用户输入一个正整数,判断该数是奇数还是偶数,如果奇数输出odd,偶数则输出even。
输入格式
输入一个正整数
输出格式
奇数输出odd,偶数则输出even。
代码
# 用户输入一个整数,判断该数是奇数还是偶数,如果奇数输出odd,偶数则输出even number = int(input()) if number % 2 == 1: print("odd") else: print("even") # 条件表达式解法 # number = int(input()) # print("odd") if number % 2 == 1 else print("even")
流程控制
百钱买百鸡B
描述
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何。
现在的问题是:用户输入鸡的数量和钱数,鸡翁、鸡母、鸡雏各为多少?如果有解,输出全部解,并按鸡翁数量由少到多的顺序输出;如果无解则输出“无解”。
输入格式
用户在同一行内输入用空格分隔的两个正整数,分别表示鸡的数量和钱数
输出格式
每行输出一组结果,按鸡翁数、鸡母数、鸡雏数的顺序输出;
有多组解时,按鸡翁数量由少到多输出;
如果无解则输出“无解”。
代码
# 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何? # 现在的问题是:用户输入钱和鸡的总数,计算鸡翁、鸡母、鸡雏各为多少?如果有解,输出全部解,并按鸡翁数量由少到多的顺序输出;如果无解则输出“无解”。 num, money = map(int, (input().split())) flag = 0 for x in range(1, money // 5 + 1): for y in range(1, money // 3 + 1): z = num - x - y # 鸡雏的数量等于总数减鸡翁和鸡母的数量 if z % 3 == 0 and z > 0 and 5 * x + 3 * y + z // 3 == money: print(x, y, z) flag = 1 # 如果找到满足的解那么flag从0变为1 # 如果找不到满足的解则输出无解 if flag == 0: print('无解')