Python语言期末考试

目录

1、创建一个文件words_file.txt,读取这个文件中的所有内容,讲内容中的英文字母按照一定的方式加密后,写入到一个新文件new_file.txt中。加密的方法是:将A变成B,B变成C,……,Y变成Z,Z变成A;a变成b,b变成b,……,y变成z,z变成a,其他字符不变。(上传源代码和程序运行截图)

2、设计一个Circle(圆)类,该类中包括属性radius(半径),还包括__init__()、get_perimeter()(求周长)和get_area()(求面积)共方法。设计完成后,创建Circle类的对象求周长和面积的功能。(上传源代码和程序运行截图) 

3、已知字符串str= 'skdaskerkjsalkj',请统计该字符串中各字母出现的次数。(上传源代码和程序运行截图)

4、只能由1和它本身整除的整数被称为素数;请循环输出2-100之间的所有素数。(上传源代码和程序运行截图)

5、已知某公司有一批销售员工,其底薪为2000元,员工销售额与提成比例如下:

要求编写程序,通过输入员工的销售额,计算出其薪水总额并输出。(上传源代码和程序运行截图)

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

7、编写程序,输出九九乘法表。(上传源代码和程序运行截图)

8、编写一个计算年份是否是闰年的程序。(上传源代码和程序运行截图)

9、编写一个能将百分制成绩转换为等级制成绩的程序。(上传源代码和程序运行截图)

10、求出所有的水仙花数。(上传源代码和程序运行截图)

11、给定一个文件 data.csv

12、编辑代码实现以下功能,随机生成50个介于[1,20]之间的整数,然后统计每个整数出现频率。(上传源代码和程序运行截图)

13、输入一个华氏温度,输出对应的摄氏温度。(上传源代码和程序运行截图)

14、给定一个元组,利用列表和元组的相互转换实现元组元素的更改,去除元组中的整型数据。打印更改后的元组。(上传源代码和程序运行截图)

15、求解一元二次方程 ax2+bx+c=0的根,系数a、b、c的值从输入获取。注意考虑以下几种情况。(上传源代码和程序运行截图)

16、阶乘是利用递归方式求解的经典问题,要求编写程序,定义一个求阶乘的递归函数。(上传源代码和程序运行截图)

17、定义一个类 Vector3d,使其包含 3 个私有数据成员 x、y、z,并能够在构造方法中,接收3个参数,对这3个私有数据成员进行初始化;类 Vector3d 拥有 3 个特殊方法,分别用来支持加法运算符、减法运算符,实现两个三维向量之间的加法和减法运算(例如向量(3,4,5)与向量(4,5,6)的和为向量(7,9,11),差为向量(-1,-1,-1)),以及支持内置函数print(),查看向量的值(例如输出各分量分别为3、4、5 的三维向量,会得到(3,4,5));(上传源代码和程序运行截图)

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

19、编写一个根据三条边长判断三角形类型的函数。

20、根据提示,接收用户输入的字符串(判断是否是回文数)。

21、【问题描述】输入一个3位正整数,将它逆序输出。假设输入的3位整数是938,则输出839.(上传源代码和程序运行截图)

22、计算圆周长和圆面积 V2.0 (上传源代码和程序运行截图)

23、停车费 (上传源代码和程序运行截图)

24、判断一个3位数是否是水仙花数。(上传源代码和程序运行截图)

25、录取研究生 (上传源代码和程序运行截图)

26、骑车还是走路 (上传源代码和程序运行截图)

27、猴子吃桃问题 (上传源代码和程序运行截图)

28、判断该字符是字母字符、数字字符还是其他字符 (上传源代码和程序运行截图)

29、一年中第几天(上传源代码和程序运行截图)

30、奇数列表  (上传源代码和程序运行截图)

31、找因子 (上传源代码和程序运行截图)

32、ISBN校验码判断  (上传源代码和程序运行截图)

33、找不同  (上传源代码和程序运行截图)

34、用人名查电话  (上传源代码和程序运行截图)

35、字母计数  (上传源代码和程序运行截图)​​​​​​​


1、创建一个文件words_file.txt,读取这个文件中的所有内容,讲内容中的英文字母按照一定的方式加密后,写入到一个新文件new_file.txt中。加密的方法是:将A变成B,B变成C,……,Y变成Z,Z变成A;a变成b,b变成b,……,y变成z,z变成a,其他字符不变。(上传源代码和程序运行截图)

source_file = open(r'C:\Users\86182\Desktop\words_file.txt','r',encoding="utf-8")
new_file = open(r'C:\Users\86182\Desktop\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()

2、设计一个Circle(圆)类,该类中包括属性radius(半径),还包括__init__()、get_perimeter()(求周长)和get_area()(求面积)共方法。设计完成后,创建Circle类的对象求周长和面积的功能。(上传源代码和程序运行截图) 

class Circle:
    radius = 1
    def __init__(self,r):
        self.radius = r
    def get_perimeter(self):
        perimeter = 2*3.14*self.radius
        return perimeter
    def get_area(self):
        areas = 3.14*self.radius*self.radius
        return areas

circle = Circle(4)
per = circle.get_perimeter()
area = circle.get_area()
print(f"perimeter={per}")
print(f"area={area}")

3、已知字符串str= 'skdaskerkjsalkj',请统计该字符串中各字母出现的次数。(上传源代码和程序运行截图)

str = 'skdaskerkjsalkj'
count = {}  #字典{键:值}
for i in str:
    if i in count.keys():
        count[i] += 1
    else:
        count[i] = 1  #i为键,1为初始值
print(count)

4只能由1和它本身整除的整数被称为素数;请循环输出2-100之间的所有素数。(上传源代码和程序运行截图)

i = 2  #使用变量前必须先赋值
for i in range(2,100):
    j = 2
    for j in range (2,i):
        if(i%j==0):
            break
    else:
        print(i,end=" ")  #每输出一次空一格

5已知某公司有一批销售员工,其底薪为2000元,员工销售额与提成比例如下:

(1)当销售额<=3000时,没有提成;

(2)当3000<销售额<=7000时,提成10%;

(3)当7000<销售额<=10000时,提成15%;

(4)当销售额>10000时,提成20%。

要求编写程序,通过输入员工的销售额,计算出其薪水总额并输出。(上传源代码和程序运行截图)

money = 2000
price = int(input("请输入销售额:"))
if 0 <= price <= 3000:
    pass
elif 3000 < price <= 7000:
    money += price * 0.1
elif 7000 < price <= 10000:
    money += price * 0.15
elif price > 10000:
    money += price * 0.2
else:
    print("输入错误!")

print(f"薪水总额:{money}")

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

coke,hen,chicken = 0,0,0
for coke in range(21):  #公鸡最多20只(五钱一只)
    for hen in range(34):  #母鸡最多33只(三钱一只)
        chicken = 100 - coke - hen  #剩余的只数是小鸡只数
        if 5*coke + 3*hen + chicken/3 == 100:
            print(f"coke={coke},hen={hen},chicken={chicken}")
        #hen+=1 #为啥这两个要+=1,加不加输出都一样
    #chicken+=1

7编写程序,输出九九乘法表。(上传源代码和程序运行截图)

for i in range(1,10):
    for j in range(1,i+1):
        print(f"{j}*{i}={i*j}",end="\t")
    print()

8、编写一个计算年份是否是闰年的程序。(上传源代码和程序运行截图)

编程要求 计算年份是否是闰年,如果是闰年输出True 否则输出False。

测试说明

测试输入:4981                         预期输出: False

测试输入:2020                         预期输出: True

year = int(input())
if(year % 400 == 0)or(year % 4 == 0 and year % 100 != 0):
    print("True")
else:
    print("False")

9、编写一个能将百分制成绩转换为等级制成绩的程序。(上传源代码和程序运行截图)

编程要求 根据提示,在右侧编辑器补充代码,将百分制成绩转换为等级制成绩。 

(90<=score<=100:A); (80<=socre<90:B); (70<=socre<80:C); (60<=socre<70:D); (score<60:E)

测试说明

测试输入:90.5;                                         预期输出:A

测试输入:82;                                            预期输出:B

score = float(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("成绩输入错误!")

10、求出所有的水仙花数。(上传源代码和程序运行截图)

提示:所谓水仙花数是指一个三位数,其各位数字的立方和等于该数字本身。比如153是一个水仙花数,因为153=1^3+5^3+3^3。

例如:370就是一个水仙花数,因为370 = 3^3 +7^3 + 0^3

测试说明

输入:                                                        输出:153 370 371 407

for i in range(100,1000):
    #不是用//整除的话,需要int()转换,否则是float浮点型
    a = i // 100  #百位
    b = i % 100 // 10  #十位
    c = i % 10  #个位
    if pow(a,3) + pow(b,3) + pow(c,3)  == i:  #pow(num,幂)
        print(i,end=" ")

11、给定一个文件 data.csv,内容如下:

请读取文件,获取文件中的数字内容。

预期输出:                文件中的数字内容为:57.3(上传源代码和程序运行截图)

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

12、编辑代码实现以下功能,随机生成50个介于[1,20]之间的整数,然后统计每个整数出现频率。(上传源代码和程序运行截图)

提示:需要导入random库中的randint函数。

import random
count = {}  #用字典{num:count}记录频率
number = []  #统计五十个数,测试用
for i in range(50):
    num = random.randint(1,21)
    number.append(num)  #统计五十个数,测试用
    if num in count:
        count[num] += 1
    else:
        count[num] = 1  #第一次出现,记录进字典,count=1
print(number,end=" ") #输出五十个数,测试用
print()  #换行
print(count,end=" ")

13、输入一个华氏温度,输出对应的摄氏温度。(上传源代码和程序运行截图)

华氏度与摄氏度转换公式: C=(F325/9 程序会从测试用例获取F的输入值,请根据公式计算出正确的C并正确输出。(按公式根据f计算摄氏度,四舍五入保留3位小数,要求使用round函数)

测试用例: 95.2345                                输出结果: 摄氏度:35.13

要求输出结果严格按照以上格式,输出字符串中符号均为英文符号,所有数字均四舍五入保留两位小数!

F = float(input())  #转换为float浮点数
C = round(((F-32) * 5/9),3)  #round函数四舍五入保留3位,默认四舍五入为整数
print(f"摄氏度:{C}")

14给定一个元组,利用列表和元组的相互转换实现元组元素的更改,去除元组中的整型数据。打印更改后的元组。(上传源代码和程序运行截图)

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))
lists = list(tup)
#遍历新转换的列表的话,好像不能删除完——不知道为什么
#可能因为列表有序,边删除边向下一个数迭代遍历,导致跳过了某些数,实验证明了好像确实是这样
for i in tup:  #遍历的是原元组!!
    if type(i) == int:
        lists.remove(i)  #因为元组不可更改,故从列表中删除该元素

print(tuple(lists))  #转换为元组输出

15、求解一元二次方程 ax2+bx+c=0的根,系数a、b、c的值从输入获取。注意考虑以下几种情况。(上传源代码和程序运行截图)

#第1步:使用input获取三个系数值,分别赋值给a、b、c
from math import sqrt

a = int(input())
b = int(input())
c = int(input())

#第2步:求解一元二次方程,并打印结果x的值
tmp=b**2-4*a*c
if a==0 and b!=0:
    x=-c/b
    print(x)
elif a!=0 and tmp>0:
    x1=(sqrt(tmp)-b)/(2*a)
    x2=(-b-sqrt(tmp))/(2*a)
    print("x1为%f,x2为%f"% (x1,x2))
elif a!=0 and tmp==0:
    x=-b/(2*a)
    print(x)
else:
    print('无解')

16、阶乘是利用递归方式求解的经典问题,要求编写程序,定义一个求阶乘的递归函数。(上传源代码和程序运行截图)

#要求递归函数!
def factorial(num):
    if num == 1:
        return 1
    else:
        return factorial(num-1) * num

print(factorial(5))  #调用函数,随意传一个数字进去

17、定义一个类 Vector3d,使其包含 3 个私有数据成员 x、y、z,并能够在构造方法中,接收3个参数,对这3个私有数据成员进行初始化;类 Vector3d 拥有 3 个特殊方法,分别用来支持加法运算符、减法运算符,实现两个三维向量之间的加法和减法运算(例如向量(3,4,5)与向量(4,5,6)的和为向量(7,9,11),差为向量(-1,-1,-1)),以及支持内置函数print(),查看向量的值(例如输出各分量分别为3、4、5 的三维向量,会得到(3,4,5));(上传源代码和程序运行截图)

class Vector3d:
    def __init__(self, x, y, z):
        self.__x = x
        self.__y = y
        self.__z = z

    def length(self):
        return (self.__x**2 + self.__y**2 + self.__z**2) ** 0.5

    def __str__(self):
        return "("+str(self.__x)+", "+str(self.__y)+", "+str(self.__z)+")"

    def __add__(self, v):
        x=self.__x+v._Vector3d__x
        y=self.__y+v._Vector3d__y
        z=self.__z+v._Vector3d__z
        return Vector3d(x,y,z)

    def __sub__(self, v):
        x=self.__x-v._Vector3d__x
        y=self.__y-v._Vector3d__y
        z=self.__z-v._Vector3d__z
        return Vector3d(x,y,z)

v1 = Vector3d(3, 4, 5)
v2 = Vector3d(4, 5, 6)
print(v1 + v2)
print(v1 - v2)
print(v1)
class Vector3d:
    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z

class Vector3d:
    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z

class Vector3d:
    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z

    def __add__(self, other):
        return Vector3d(self.x + other.x, self.y + other.y, self.z + other.z)

    def __sub__(self, other):
        return Vector3d(self.x - other.x, self.y - other.y, self.z - other.z)

    def __str__(self):
        return "({}, {}, {})".format(self.x, self.y, self.z)


v1 = Vector3d(3, 4, 5)
v2 = Vector3d(4, 5, 6)
print(v1 + v2)
print(v1 - v2)
print(v1)

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

#递归实现
def fib(num):
    if num == 1 or num == 2:
        return 1
    else:
        return fib(num-1)+fib(num-2)

number = int(input("请输入一个正整数:"))  #输入数字测试
result = fib(number)
print(f"第{number}个斐波那契数为{result}")

19、编写一个根据三条边长判断三角形类型的函数。

若不能构成三角形,返回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("其他三角形")

20、根据提示,接收用户输入的字符串(判断是否是回文数)。

若字符串不是数字字符串,提示不是数字;若字符串x是回文数,显示x是回文数;若字符串x不是回文数,显示x不是回文数。(上传源代码和程序运行截图)

测试输入:请输入字符串12321;        预期输出:12321是回文数

测试输入:请输入字符串12345;        预期输出:12345不是回文数

测试输入:请输入字符串12a;            预期输出:不是数字

num = input("请输入字符串")
if str.isnumeric(num):  #判断输入的字符串是否为数字,是则继续执行
    if num[::-1] == num:
        print(f"{num}是回文数")
    else:
        print(f"{num}不是回文数")
else:
    print("不是数字")

21、【问题描述】输入一个3位正整数,将它逆序输出。假设输入的3位整数是938,则输出839.(上传源代码和程序运行截图)

【样例输入】938                                        【样例输出】839

【样例输入】120                                        【样例输出】21

num = int(input())
#不是用//整除的话,需要int()转换,否则是float浮点型
a = num // 100  #百位
b = num % 100 // 10  #十位
c = num % 10  #个位

number = a + b * 10 + c * 100
print(number)
a=input()
if a[-1]=='0':  #个位为0
   b=a[:-1]  
   print(b[::-1])  #逆序
else :
   print(a[::-1])

22、计算圆周长和圆面积 V2.0 (上传源代码和程序运行截图)

【问题描述】输入圆的半径r,计算圆周长和圆面积,保留2位小数

【输入形式】Please enter radium:

【输出形式】

【样例输入输出】

  Please enter radium:10

  Circumference is 62.83

  Round area is 314.16

import math  #导入math模块
r = float(input("Please enter radium:"))
p = math.pi  #圆周率
c = 2 * p * r
s = p * (r ** 2)
print("Circumference is {:.2f}".format(c))
print("Round area is {:.2f}".format(s))

23、停车费 (上传源代码和程序运行截图)

【问题描述】进入停车场开始计费。停车时间小于0.5小时不收费;每小时收费5元;不足1小时按1小时收费;最多收费50元也就是10小时以上都是50元。

【输入形式】输入停车时间                【输出形式】0或者50或者25

【样例输入】time:4.1                        【样例输出】25

import math
time = eval(input("time:"))  #eval():去掉字符串最外层的双引号,获得里面字符的数据类型
if time < 0.5:
    money = 0
elif 0.5 < time <= 10:
    money = math.ceil(time) * 5  #math.ceil()  “向上取整”, 即小数部分直接舍去,并向正数部分进1
elif time > 10:
    money = 50
else:
    print("输入错误")
print(money)

24、判断一个3位数是否是水仙花数。(上传源代码和程序运行截图)

【问题描述】输入一个三位正整数abc,如果满足a^3+b^3+c^3=abc,则该数是水仙花数。例如123不等于1+8+27所以123不是水仙花数。

【输入形式】输入一个三位正整数

【输出形式】false或者true或者error

【样例输入】please input a three-digit number: 123

【样例输出】false

【样例说明】

样例输入中的下划线表示具体输入的数字;需要增加范围检测,当你输入的不是三位数时,输出error。注意次方运算符的写法不是问题描述中的方法。

num = int(input("please input a three-digit number: "))
if 100 <= num <= 999:
    a = num // 100  # 百位
    b = num % 100 / 10  # 十位
    c = num % 10

    if(pow(a,3)+pow(b,3)+pow(c,3) == num):  #用**n也可以(n次方)
        print("true")
    else:
        print("false")
else:
    print("error")

25、录取研究生 (上传源代码和程序运行截图)

【问题描述】某高校录取研究生的要求是,每门课成绩不低于60分,总成绩不低于340分,370分以下为自费。编一程序实现输入一个学生的四门课成绩,试判断该生为该校录取的情况(没有录取“not”、自费“pay”、公费“free”三种情况)。

【输入形式】

输入四门课的成绩,成绩均为0~150之间的整数。输入4门课成绩的时候可以结合eval()和input()函数一次性输入4个值,输入数字时用逗号分隔

【输出形式】not或者pay或者free

【样例输入】four scores:55,120,110,120        

【样例输出】not

a,b,c,d = eval(input("four scores:"))
sum = a+b+c+d
#不低于,也可以先写 a<60,然后在else里写录取情况
if a>=60 and b>=60 and c>=60 and d>=60 and sum >= 340:
    if sum < 370:
        print("pay")
    else:
        print("free")
else:
    print("not")

26、骑车还是走路 (上传源代码和程序运行截图)

【问题描述】在华农校园里,没有自行车,上课办事会很不方便。但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间。假设找到自行车,开锁并骑上自行车的时间为30秒;停车锁车的时间为20秒;步行每秒行走2米,骑车每秒行走4米。请判断走不同的距离去办事,是骑车快还是走路快。

若一次办事要行走的距离为整数,单位为米。对输入的整数,如果骑车快,输出一行“Bike”;如果走路快,输出一行“Walk”;如果一样快,输出一行“All”。

【输入形式】输入一个正整数

【输出形式】Bike或者Walk或者All

【样例输入】Please input a number of distance:40

【样例输出】Walk

【样例输入】Please input a number of distance:200

【样例输出】All

dis = int(input("Please input a number of distance:"))
a = 50 + dis/4  # 骑车
b = dis/2  # 步行
if a > b:
    print("Walk")
elif b < a:
    print("Bike")
else:
    print("All")

27、猴子吃桃问题 (上传源代码和程序运行截图)

【问题描述】猴子吃桃问题:猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第n天吃以前发现只剩下一个桃子,编写程序实现:据输入的天数计算并输出猴子共摘了几个桃子

【输入形式】输入的一行为一个非负整数,表示一共吃的天数。

【输出形式】输出的一行为一个非负整数,表示共摘了几个桃子,若输入的数据不合法(如:负数或小数),则输出"illegal data"。

【样例输入】3                                                  【样例输出】10

【样例输入2】0                                                【样例输出2】0

day = eval(input())
a = 1  #最后一天只剩一个桃子
if day != int(day) or day < 0:
    print("illegal data")
elif day == 0:
    print(0)
else:
    for i in range(1,day):  #递推,从第n天往前累加
        a = 2*(a+1)
    print(a)

28、判断该字符是字母字符、数字字符还是其他字符 (上传源代码和程序运行截图)

【问题描述】已知变量ch中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。

【输入形式】只输入一个字符

【输出形式】alphabet character或者digital character或者others character

【样例输入】please input a char:c

【样例输出】alphabet character

ch = input("please input a char:")

if ch.isalpha():
    print("alphabet character")
elif ch.isdigit():
    print("digital character")
else:
    print("others character")
ch = input("please input a char:")

if 'a'<=ch<='z':
    print("alphabet character")
elif '0'<=ch<='9':  #字符串
    print("digital character")
else:
    print("others character")

29、一年中第几天(上传源代码和程序运行截图)

【问题描述】输入某年某月某日,判断这一天是这一年的第几天?程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天。特殊情况:闰年且输入月份大于3时需考虑多加一天。

提示:(1) 闰年的2月有29天,平年的2月有28天;

      (2) 如果年份满足以下两个条件之一,则该年就是闰年。

       i) 年份能被4整除且不能被100整除

       ii) 年份能被400整除

【输入形式】

输入一行,一行三个整数,用空格隔开,分别代表年月日。如2012 2 7

代表2012年2月7日。注意,不要输入任何汉字。

【输出形式】输出只有一个数字,即所对应的日期是该年的第几天。

【样例输入】2012 1 1

【样例输出】1

a,b,c=input().split() # split()函数的使用方法见第4讲课件
a=int(a)
b=int(b)
c=int(c)
if (a%4==0 and a%100!=0) or a%400==0:
     feb=29
else:
     feb=28
w=0
for m in range(1,b):
    if m==1 or m==3 or m==5 or m==7 or m==8 or m==10 or m==12:
        w=w+31
    elif m==4 or m==6 or m==9 or m==11:
        w=w+30
    elif m==2:
        w=w+feb
print(w+c)
year, month, day = map(int, input().split())

# 定义一个列表,存放每个月份的天数
days_per_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

# 判断是否为闰年,并修改二月的天数
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    days_per_month[1] = 29

# 对前几个月的天数求和
day_of_year = sum(days_per_month[:month-1])

# 加上当月的天数
day_of_year += day

print(day_of_year)

30、奇数列表  (上传源代码和程序运行截图)

【问题描述】

输入一个小于100并且大于1的正整数,生成由小于该整数的奇数构成的递增列表C,并输出列表C;

【输入形式】

输入一个小于100并且大于1的正整数;

【输出形式】

输出一个列表,包含所有小于该正整数的所有奇数;

【样例输入】

Please input an integer which is between 2 and 99:15

【样例输出】

[1, 3, 5, 7, 9, 11, 13]  

num = int(input("Please input an integer which is between 2 and 99:"))
a=[]
for i in range(1,num+1):
    if i % 2 == 1 and i<num:
        a.append(i)
print(a)

31、找因子 (上传源代码和程序运行截图)

【问题描述】

输入一个大于1的整数,返回一个列表,包含所有能够整除该整数的因子(不包含1和它本身),并且从小到大排序。如果这个数是素数,则输出“(整数) is prime”。

【样例输入】number:6                                【样例输出】[2, 3]

【样例输入】number:5                                【样例输出】5 is prime

num = int(input("number:"))
b = []
flag = True
for i in range(2,num):
    if num % i == 0:
        b.append(i)
        flag = False
if flag:
    print(f"{num} is prime")
else:
    print(sorted(b))

32、ISBN校验码判断  (上传源代码和程序运行截图)

【问题描述】

    每一本正式出版的图书都有一个ISBN号码与之对应。自2007年开始,ISBN码包括13位数字和4位分隔符,其中符号'-'就是分隔符(键盘上的减号),13位书号的最后一位数字为稽核号,数值范围由0至9,其计算方法如下:

        (1) 用1分别乘书号的前12位数字中的奇数位,用3乘以偶数位;(去掉分隔符-后的位数,第一个数字是第1位,从奇数位开始。)

        (2)将各乘积相加,求出总和;

        (3)将总和除以10,得出余数;

        (4)将10减去余数后即为稽核号。如相减后的数值为10,稽核号则为0。

【输入形式】 一个字符串,代表一本书的ISBN号码

【输出形式】

        假如输入的ISBN号码的识别码正确,那么输出“Right”;否则,按照规定的格式,输出正确的ISBN号码(包括分隔符'-')。

【样例输入】978-7-121-28484-3                        【样例输出】978-7-121-28484-7

a=input()
b=a.replace('-','')
s=0
for i in range(1,13):
    if i%2==1:
        s=s+int(b[i-1])
    elif i%2==0:
        s=s+3*int(b[i-1])
n=10-s%10
if n==10:
    n=0
if str(n)==b[-1]:
    print('Right')
else:
    print(a[0:16]+str(n))

33、找不同  (上传源代码和程序运行截图)

【问题描述】

          9个同学一起做游戏,每个人报一个[1,20]区间上的正整数,请你编程求出有多少个不同的数。

【输入形式】输入1行,输入9个[1,20]区间上的整数,每个整数之间以空格为分隔符

【输出形式】输出1个数,表示输入的9个数中不同数的个数。

【样例输入】1 2 3 3 2 2 7 8 9

【样例输出】6

【样例说明】可以使用字符串的split()方法将一个字符串按照指定字符切割成字符列表

a = input().split()
b = set(a)  # 集合的元素不可重复
print(len(b))   #  输出长度

34、用人名查电话  (上传源代码和程序运行截图)

【问题描述】

定义一个电话簿,里头设置以下联系人:

    'mayun':'13309283335',

    'zhaolong':'18989227822',

    'zhangmin':'13382398921',

    'Gorge':'19833824743',

    'Jordan':'18807317878',

    'Curry':'15093488129',

    'Wade':'19282937665'

现在输入人名,查询他的号码。

【输入形式】人名,是一个字符串。

【输出形式】电话号码。如果该人不存在,返回"not found"

【样例输入】mayun

【样例输出】13309283335

phone = {'mayun':'13309283335',
'zhaolong':'18989227822',
'zhangmin':'13382398921',
'Gorge':'19833824743',
'Jordan':'18807317878',
'Curry':'15093488129',
'Wade':'19282937665'}
name = input()
flag = True

if name in phone.keys():
    print(phone[name])
    flag = False

if flag:
    print("not found")

35、字母计数  (上传源代码和程序运行截图)

【问题描述】

输入字符串,输出字符串中出现次数最多的字母及其出现次数。如果有多个字母出现次数一样,则按字符从小到大顺序输出字母及其出现次数。

【输入形式】一个字符串。

【输出形式】出现次数最多的字母及其出现次数

【样例输入】abcccd

【样例输出】c 3

s=input()
dic={}
dic1={}
for i in s:
    if i in dic:
        dic[i]+=1
    else:
        dic[i]=1
max1=max(dic.values())
for key in dic:
    if dic[key]==max1:
        dic1[key]=dic[key]
for i,j in dic1.items():
    print("%s %d"%(i,j))
a=input()
mydict={}
for ch in a:
    if ch in mydict:
        mydict[ch]=mydict[ch]+1
    else:
        mydict[ch]=1
mylist=list(mydict.items())
mylist.sort(key=lambda x:x[1],reverse=True)
z=mylist[0]
v=z[1]
for i in mydict:
    if mydict[i]==v:
        print(i,mydict[i])

36、字母计数(2)(上传源代码和程序运行截图)

【问题描述】

输入字符串,输出字符串中出现次数最多的字母及其出现次数。如果有多个字母出现次数一样,则按字符从小到大顺序输出字母及其出现次数。

【输入形式】一个字符串。

【输出形式】出现次数最多的字母及其出现次数,如果没有字母,输出 no alpha

【样例输入】555522222abcccdaa

【样例输出】

a 3

c 3

【样例输入】

453434

【样例输出】

no alpha

a = input()
# 创建集合b
b = set(a)
c = {}
#将集合进行循环,保留字母字符,并统计对应字母字符个数存入字典中
for i in b:
    if i.isalpha():
        c[i] = a.count(i)
# 判断字典是否为空,即不存在字母字符时输出“no alpha”
if c == {}:
    print("no alpha")
# 不为空的情况则统计字典中最大的values
else:
    max1 = max(c.values())
    # items()函数以列表返回可遍历的(键,值)元组数组
    data = list(c.items())
    # 将元组进行排序
    data.sort()
# 循环判断元组values是否等于最大值,满足则输出对应字母字符及出现次数
    for i in data:
        if i[1] == max1:
            print(i[0],i[1])
n=input()
mydict={}
for ch in n:
    if ch.isalpha():
        flag=True
        if ch in mydict:
            mydict[ch]=mydict[ch]+1
        else:
            mydict[ch]=1
    if ch.isalpha()==False:
        flag=False
if flag==True:
    mylist=list(mydict.items())
    mylist.sort(key=lambda x:x[1],reverse=True)
    a=mylist[0]
    b=a[1]
    for i in mydict:
        if mydict[i]==b:
            print(i,mydict[i])
else:
    print('no alpha')
  • 10
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值