简单

第一题

创建一个文件words_file.txt,读取这个文件中的所有内容,将内容中的英文字母按照一定的方式加密后,写入到一个新文件new_file.txt中。
加密的方法是:将A变成B,B变成C,……,Y变成Z,Z变成A;a变成b,b变成b,……,y变成z,z变成a,其他字符不变。

# 注意当前工程里要有words_file.txt这个文件啊!
source_file = open('words_file.txt', 'r', encoding = 'utf-8')
new_file = open('new_file.txt','w+', encoding = 'utf-8')
content = source_file.read(1)
while content:
    if content == 'Z':
    	content = 'A'
    elif content == 'z':
        content = 'a'
    elif (ord(content) in range(65, 90)) or (ord(content) in range(97, 122)):
		content = chr(ord(content) + 1)
    new_file.write(content)
    content = source_file.read(1)
source_file.close()
new_file.close()

第二题

设计一个Circle(圆)类,该类中包括属性radius(半径),还包括__init__()get_perimeter()(求周长)和get_area()(求面积)共方法。
设计完成后,创建Circle类的对象求周长和面积的功能。

# import decimal
from decimal import Decimal

PI = 3.14
class Circle:
    def __init__(self, radius):
        self.radius = radius
    def perimeter(self):
        return PI * 2 * self.radius
    def area(self):
        return PI * self.radius * self.radius
circle = Circle(6)
# 保留两位小数(以area为例)
circle_area_str = str(circle.area())
circle_area = Decimal(circle_area_str).quantize(Decimal("0.01"))
print('周长是{},面积是{}'.format(circle.perimeter(), circle_area))
PI = 3.14
class Circle:
    radius = 1
    def __init__(self,r):
        self.radius = r
    def get_perimeter(self):
        perimeter = 2 * PI * self.radius
        return perimeter
    def get_area(self):
        area = PI * self.radius * self.radius
        return area
circle = Circle(4)
per = circle.get_perimeter()
area = circle.get_area()
print('perimeter = %.2f'%per)
print('area = %.2f'%area)

第三题

已知字符串str= ‘skdaskerkjsalkj’,请统计该字符串中各字母出现的次数。

str = 'skdaskerkjsalkj'
# 建立一个字典
count = {}
for i in str:
	if i in count.keys():
		count[i] += 1;
	else:
		count[i] = 1;
print(count)

第四题

只能由1和它本身整除的整数被称为素数;请循环输出2-100之间的所有素数。

import math
# 使用一个函数,传入参数n
def is_prime(n):
    m = math.sqrt(n)
    # range()是python内置函数它能返回一系列连续增加的整数,它的工作方式类似于分片,可以生成一个列表对象。
    for i in range(2, int(m)):
        if n % i == 0:
            return False
    return True

# 主程序
# 此处为[2, 101),满足题目要求[2, 100]。
for i in range(2, 101):
    if is_prime(i):
        print(i, "是素数~")
i = 2
for i in range(2, 101):
    j = 2
    for j in range(2, int(math.sqrt(i))):
        if(i % j == 0):
            break
    # 正常结束for循环就会走这个else
    # 如果不是正常结束for循环,就不会走这个else
    else:
        print(i)

第五题

已知某公司有一批销售员工,其底薪为2000元,员工销售额与提成比例如下:
(1)当销售额≤3000时,没有提成;
(2)当3000<销售额≤7000时,提成10%;
(3)当7000<销售额≤10000时,提成15%;
(4)当销售额>10000时,提成20%。
要求编写程序,通过输入员工的销售额,计算出其薪水总额并输出。

我不知道提成怎么算= =
这是我的理解的写法……

# 薪水
salary = 2000
# 销售额
sales = int(input(('请输入员工的销售额:')))
if sales <= 3000:
    print("薪水:", salary)
elif  3000 < sales <= 7000:
    print("薪水:", salary + sales * 0.1)
elif  7000 < sales <= 10000:
    print("薪水:", salary + sales * 0.15)
else:
    print("薪水:", salary + sales * 0.2)
# 这是老师给的标准答案
salary = 2000
sale = int(input('请输入销售额:'))
if sale % 1000 == 0:	#计算销售系数
    k = sale / 1000
else:
    k = sale / 1000 + 1
if k > 3 and k <= 7:	#计算薪水
    salary += sale * 0.1
elif k > 7 and k <= 10:
    salary += sale * 0.15
elif k > 10:
    salary += sale * 0.2
print('薪水总计:{}'.format(salary))

第六题

中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?编程解决以上问题。

cock, hen, chicken = 0, 0, 0
for cock in range(21):
	for hen in range(34):
		chicken = 100 - cock - hen
        if 5 * cock + 3 * hen+chicken / 3 == 100:
             print("cock={}, hen={}, chicken={}".format(cock, hen, chicken))
        hen += 1
    cock += 1

第七题

编写程序,输出九九乘法表。

# 行
for row in range(1, 10):
    # 列
    for col in range(row, 10):
        #2d代表十进制填充(应该叭= =
        print("{0}*{1}={2:2d}".format(row, col, row * col), end = " ")
    print("")
# 行
for row in range(1, 10):
    # 列
    for col in range(1, row + 1):
        #2d代表十进制填充(应该叭= =
        print("{0}*{1}={2:2d}".format(col, row, row * col), end = " ")
    print("")

第八题

编写一个计算年份是否是闰年的程序。
编程要求 计算年份是否是闰年,如果是闰年输出True 否则输出False。
测试说明:
测试输入:4981 预期输出:False
测试输入:2020 预期输出:True


第九题

编写一个能将百分制成绩转换为等级制成绩的程序。
编程要求:
根据提示,在右侧编辑器补充代码,将百分制成绩转换为等级制成绩。 (90<=score<=100:A);
(80<=socre<90:B);
(70<=socre<80:C);
(60<=socre<70:D);
(score<60:E)
测试说明:
测试输入:90.5;
预期输出:A
测试输入:82;
预期输出:B


第十题

求出给定范围的所有的水仙花数。
提示:所谓水仙花数是指一个三位数,其各位数字的立方和等于该数字本身。比如153是一个水仙花数,因为153=13+53+3^3。
例如:370就是一个水仙花数,因为370 = 3^3 +7^3 + 0^3
测试说明 :
以下是测试样例:
输入:410
输出:153 370 371 407


第十一题

给定一个文件 data.csv,内容如下:
Temperature data
————————
————————
Fahrenheit degrees:57.3
请读取文件,获取文件中的数字内容。
预期输出:
文件中的数字内容为:57.3

# 请使用 open 函数读取文件中的指定内容
f = open("data.csv", "r")
result = f.readlines()[-1]
print("文件中的数字内容为:%s"%result.split(":")[-1].strip())
f.close()

第十二题

从输入字符串中清除HTML标记。
例如:
htmlText = '<a href=\"index.html\">Welcome to Python world!</a>'
预期结果:
Welcome to Python world!

import re
    
htmltext = r'<a href=\"index.html\">Welcome to Python world!</a>'
regex_href = re.compile(r'<.+?>')
result = regex_href.sub('', htmltext) #替换为空'',并返回替换结果

print(result)

第十三题

编辑代码实现以下功能,随机生成50个介于[1,20]之间的整数,然后统计每个整数出现频率。

#编辑代码实现以下功能,随机生成50个介于[1,20]之间的整数,然后统计每个整数出现频率。
# 使用集合
import random

list_1 = []
#随机生成包含50个0-20的整数
for i in range(50):
    # 左闭右闭
    list_1.append(random.randint(1, 20))
print('生成50个随机整数的列表为:', list_1)
#计算列表中每个元素出现的次数
# 左闭右开
for i in range(1, 21):
    list_2 = []
    #计算元素个数并添加到列表list_2中
    list_2.append(list_1.count(i))
    #将列表转换成集合
    s_1 = set(list_2)
    print('其中元素%s出现的次数为:'%(i), s_1)
import random
x = [random.randint(1,20) for i in range 50 ]
r = dict()
for i in x:
    r[i] = r.get(i , 0)+1
for k, v in r.items():
    print(k, v)

第十四题

输入一个华氏温度,输出对应的摄氏温度。
华氏度与摄氏度转换公式: C=(F−32)∗5/9 程序会从测试用例获取F的输入值,请根据公式计算出正确的C并正确输出。(按公式根据f计算摄氏度,四舍五入保留3位小数,要求使用round函数)
测试用例: 95.2345
输出结果: 摄氏度:35.13
要求输出结果严格按照以上格式,输出字符串中符号均为英文符号,所有数字均四舍五入保留两位小数!

f=float(input())     
c=round((f - 32) * 5 / 9, 3)	#按公式根据f计算摄氏度,四舍五入保留3位小数,要求使用round函数
print('摄氏度:{ .2f}'.format(c))#输出摄氏度,保留2位小数

第十五题

给定一个元组,利用列表和元组的相互转换实现元组元素的更改,去除元组中的整型数据。打印更改后的元组。
tup = (1,“3”,4,5,“4”,“a”,(1,2,3,4),“b”,“c”,6,17,“d”,(“a”,“b”,“c”),0,“e”,“f”,True,10,“False”,11,“h”,“A”,“B”,“C”,30,“D”,-35,-60,(-1,-2,-5))

# 利用列表和元组的相互转换实现元组元素的更改,去除元组中的整型数据
tup = (1,"3",4,5,"4","a",(1,2,3,4),"b","c",6,17,"d",("a","b","c"),0,"e","f",True,10,"False",11,"h","A","B","C",30,"D",-35,-60,(-1,-2,-5))
lis = list(tup)
for val in tup:
    if type(val) == int:
		lis.remove(val)
print(tuple(lis))

第十六题

阶乘是利用递归方式求解的经典问题,要求编写程序,定义一个求阶乘的递归函数。

def factorial(num):
    if num == 1:
        return 1
    else:
        return num * factorial(num - 1)

第十七题

斐波那契数列又称兔子数列,因数学家列昂纳多·斐波那契以兔子繁殖为例子引入。这个数 列中的数据满足以下公式: F(1)=1, F(2)=1, F(n)= F(n-1)+F(n-2) ( n>=3,n∈N*
编写程序,利用递归实现根据用户输入的数字输出斐波那契数列的功能。

def fib(n):
    if n == 1 or n == 2:
		return 1
    return fib(n - 1) + fib(n - 2)

number = int(input('请输入一个正整数: '))
result = fib(number)
print("第%d个斐波那契数为:%d" % (number, result))

第十八题

编写一个根据三条边长判断三角形类型的函数。
若不能构成三角形,返回0;
若构成等边三角形,返回1;
若构成等腰三角形,返回2;
若构成直角三角形,返回3;
若是其他三角形,返回4。
在主程序中,根据函数的返回值,显示对应的三角形类型。
测试输入:3,3,3;
预期输出:等边三角形
测试输入:1,2,3;
预期输出:不能构成三角形
测试输入:3,4,5;
预期输出:直角三角形

def sjx(a, b, c):
    if a < b + c and b < a + c and c < a + b:
        if a == b == c:
            lx = 1
        elif a == b or a == c or b == c:
            lx = 2
        elif a * a + b * b == c * c or a * a + c * c == b * b or b * b + c * c == a * a:
            lx = 3
        else:
            lx = 4
    else:
        lx = 0
    return lx
# 主函数
x = eval(input())
y = eval(input())
z = eval(input())

m = sjx(x, y, z)

if m==0:
    print("不能构成三角形")
elif m==1:
    print("等边三角形")
elif m==2:
    print("等腰三角形")
elif m==3:
    print("直角三角形")
else:
    print("其他三角形")

第十九题

根据提示,接收用户输入的字符串。
若字符串不是数字字符串,提示不是数字;
若字符串x是回文数,显示x是回文数;
若字符串x不是回文数,显示x不是回文数。
测试输入:请输入字符串12321;
预期输出:12321是回文数
测试输入:请输入字符串12345;
预期输出:12345不是回文数
测试输入:请输入字符串12a;
预期输出:不是数字

x=input("请输入一个数字")
#代码开始
if(str.isnumeric(x)):
    if(x[::-1]==x):
        print("{}是回文数".format(x))
    else:
        print("{}不是回文数".format(x))
else:
    print("不是数字")
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐