头歌60道题目,代码,输入输出和解析

请先单击目录-分类

查看自己需要内容

目录

一,分类

二,前言

三、60个代码

1,集合创建与添加元素√

2,鸡兔同笼,空格分隔输入和map()√

3,阶乘和取余√

4,李白买酒

5,动物重量排序√

6,可变参数被坑

7,字典的添加修改删除

8, 字典遍历,键与值

9, 字典通讯录search

10, 字典通讯录modify,不同类型输入检验

11, 字典,键盘输入键值与字典相联系

12, 正整数分解质因数,map()

13, 列表字典嵌套

14, 无穷算圆周率

15, 输入问题1

16, 十进制转其他,函数

17, 存款买房-C

18, 蒙特卡洛(随机数法)算圆周率

19, 梅钦(马青)法算圆周

20, 列表最基本操作√

21,列表转元组√

22, 列表输出问题1√

23, 列表删除数据(巨坑)√

24, 列表去重√

25, 列表切片√

26, 列表嵌套字典排序√

27, 列表合并与降序(键盘输入)√

28, 列表的增删改√

29, 列表的属性(输入检测)√

30, 集合,键盘输入判断后续操作

31, 回文素数

32,回车结束输入

33, 个人所得税

34, 割圆术

35, 二维列表排序√

36, 二鼠打洞

37, 存款买房-B

38,try, except

39, 计算三角形面积

40, 保留多少位小数

41, list基础√

42, list(range())√

43, lambda使用

44, 无空格输出

45, assert()

46, 递归函数

47,迭代器基本操作

48,定义类Animal

49,定义继承类Cat

50,代码的封装

51, 圆类

52,文件

53,判断两文件是否相同

54,random模块

55,datetime模块

总结

一,分类

————————————————-目录请看左栏 ——————————————————

———————-*列表*———————–

25,列表切片

24,列表去重

26,列表嵌套字典排序

27,列表合并与降序,键盘输入

28,列表的增删改

29,列表的属性,输入检测

20,列表基本操作

21,列表转元组

22,列表输出问题1

23,列表删除数据(坑)

35,二位列表排序

41,list基础

42,list(range())

5,动物重量排序

———————-*字典元组集合*———————–

7,字典的添加修改删除

8,字典遍历,键与值

9,字典通讯录search

10,字典通讯录modify,不同类型输入检验

11,键盘输入键,值与字典相联系

13,元组字典嵌套

1,集合创建与添加元素

30,集合,键盘输入判断后续操作

———————-*算法*———————–

14,无穷算圆周率

34,割圆术

18,蒙特卡洛(随机数)法算圆周

19,梅钦(马青)法算圆周

3,阶乘和取余

2,鸡兔同笼,空格分隔输入和map()

4,李白买酒

36,二鼠打洞

17,存款买房-C

37,存款买房-B

33,个人所得税

16,十进制转其他(函数)

———————-*输入输出*———————–

6,可变函数被坑

12,正整数分解质因数,map

15,输入问题1

31,回文素数

32,回车结束输入

38,try, except

39,计算三角形面积

40,保留多少位小数

43,lambda使用

44,无空格输出

45,assert()

46,递归函数

———————-*类和文件*———————–

47,迭代器基本操作

48,定义类Animal

49,定义继承类Cat

50,代码的封装

51,圆类

52,文件

53,判断两文件是否相同

54,random模块

55,datetime模块

二,前言

从2022/10/7 ~ 2022/12/7,在头歌平台自学,历时2个月
纯新手代码

敲代码一开始遇到的各种新手无脑BUG,都在注释

所有代码在vs code头歌平台都能编译通过,有需要自取

!!!左边也有目录,请自行点击!!!

三、60个代码

1,集合创建与添加元素√

n = int(input())amp = set() #创建空集合必须 = set(),非空的话 = {值1,值2...} 或者 = ([值1,值2...])    不可变的话  = frozenset([值1, 值, 值3, ……, 值n])for i in range(n):    amp.add(input())print(len(amp))#集合的显著特点可以去掉重复元素

输入输出

5hahaTedthxhahaTed3

2,鸡兔同笼,空格分隔输入和map()√

"""在同一行内输入用空格分隔的两个整数,代表头和脚的数量,计算并输出笼中各有多少只鸡和兔,如无解则输出“Data Error!”,函数无返回值。输入:35 94输出:有23 只鸡,12 只兔输入:100 5输出:Data Error!"""head,feet = map(int,input().split())#不加int,输入的默认为字符串#1,读入以空格分隔的两个整数,表示头和脚的数量#2,map(函数,序列),此处input().split()作为序列,int作为函数,因为是函数名,不是调用函数,所以不需要()#3,至于.split()则默认为空格,换行符,制表符flag = 1for i in range(0,head + 1):    if i * 2 + (head - i) * 4 == feet:        flag = 0        print("有{}只鸡,{}只兔".format(i, head - i))if(flag):    print("Data Error!")

输入输出

66 142有61只鸡,5只兔

3,阶乘和取余√

import sys#sys库,类似C++ using namespace std; a = [1]s = [0]M = 998244353for i in range(1, int(1e6) + 10):    a.append((a[-1] * i) % M)    s.append(s[-1] + a[-1] % M)for i in sys.stdin:#连续输入    print(s[int(i)])

输入输出

39515310005061257713951000000498614221748437

4,李白买酒√

"""大诗人李白,提着酒壶,从家里出来,酒壶中有酒若干。他边走边唱:无事街上走,提壶去买酒,遇店加一倍,见花喝一斗,五遇店和花,喝光壶中酒,计算并输出壶中原有酒几斗?"""#正向:店-花-店-花-店-花-店-花-店-花。#解题思路:让李白按路线逆向走一遍,逆向:花-店*5,遇花加一斗,遇店减半wine = 0#最后酒壶空了,记得初始化for i in range(5):    wine += 1    wine /= 2print(wine)#原来有多少斗酒
0.96875

5,动物重量排序√

list = [] #先声明列表不可少while 1:    li = input().split()#1,当类型冲突时,不要规定类型,直接li = input()      if len(li) == 0: #1,血的教训:不要用if li == "",要记熟if len(li) == 0  break,这才是回车结束输入的正确方式        break # 3,回车结束输入    else:        list.append(li) #2,这个形式要记住,列表名.append(input的变量名)                        #2,将字符串作为二位列表元素输入                        #2,因为按字符串输入二维列表的元素,所以判断大小时要先加float()list_1 = sorted(list,key = lambda x:float(x[1][:-1])*1000 if x[1][-1] == 't' else float(x[1][:-2]))#1,二位列表输出一般逗号分隔#2,这里被当成字符串处理了,if[1][-1] == 't'意味着二维第二个元素的最后一个字符为t#此时按第二个元素t之前的,即0.75t中的0.75*1000的大小排序#3,else float(x[1][:-2]),第二个元素(字符串)kg之前字符串转换为float后的大小print(list_1)

输入输出

美人鱼 55kg帅哥 65kg怪兽 22t超人 22001kgApex 0.2kg[['Apex', '0.2kg'], ['美人鱼', '55kg'], ['帅哥', '65kg'], ['怪兽', '22t'], ['超人', '22001kg']]

6,可变参数被坑√

names = input().split(' ')def say_hi_multi_parameter(names): #参数加*,会变成整个元组 + ',你好!'    for name in names:#此处不用for而直接print的话,就是整个列表+你好        print(f"{name},你好!") #输出结尾无空格        #print("{},你好!".format(name)) #这样输出头歌编译过不了    #遍历输出,观察结果#调用say_hi_multi_parameter并传入参数if __name__ == '__main__':    say_hi_multi_parameter(names) #此处用print最后会多个None#因为print()函数无论如何会返回一个值,当引用的函数没有return,print()
MIke Herry Helen JamesMIke,你好!Herry,你好!Helen,你好!James,你好!

7,字典的添加修改删除√

#coding=utf-8#创建并初始化menu_dict字典menu_dict = {}while True:    try:        food = input()#输入字符串        price = int(input())#输入整型,如果输入了浮点会报错KeyError        menu_dict[food]= price    except:        break#请在此添加代码,实现对menu_dict的添加、查找、修改等操作,并打印输出相应的值menu_dict["lamb"] = 50print(menu_dict["fish"])menu_dict["fish"] = 100del menu_dict["noodles"]print(menu_dict)
noodles65fish30beef190^Z30{'fish': 100, 'beef': 190, 'lamb': 50}

ctrl + Z再回车输出

8, 字典遍历,键与值√

# coding=utf-8# 创建并初始化menu_dict字典menu_dict = {}while True:    try:        food = input()        price = int(input())        menu_dict[food]= price    except:        break# 请在此添加代码,实现对menu_dict的遍历操作并打印输出键与值for key in menu_dict.keys():    print(key)for value in menu_dict.values():    print(value)
fish35apple7banana3beef55^Zfishapplebananabeef357355

输入完后换行,ctrl + z回车输出

9, 字典通讯录search√

def menu(): #三个单引号允许字符串跨多行使用  print开头带个换行,符合题目    print('''\n欢迎使用PYTHON学生通讯录1:添加学生2:删除学生3:修改学生信息4:搜索学生5:显示全部学生信息6:退出并保存''') #而且里面自带换行,但是1:... 2:..这些都得顶格,否则输出也空几个格dict1 = {'张自强':['12652141777','材料'],'帅哥': ['14388240417', '自动化'],'美女': ['11277291473', '文法']}print(dict1)menu()n = int(input())if n == 4: #易错点:No Record和Error的位置易错    name = input() #如果有其他数字选项输入,无需读入姓名,直接输出ERROR,name输入的位置在if n == 4:后,审题很重要    if name in dict1.keys():        print(name,end = ' ')#end = ' '表示空格,而后面直接''表示换行        print(dict1[name][0],end = ' ')#dict1[name]就是值,而值是个列表,所以dict1[name][0]表示值的第一个元素        print(dict1[name][1],'')#dict[name][1]表示值的第二个元素        print('Success')    else:        print('No Record')    print(dict1)else:    print('ERROR')
{'张自强': ['12652141777', '材料'], '帅哥': ['14388240417', '自动化'], '美女': ['11277291473', '文法']}欢迎使用PYTHON学生通讯录1:添加学生2:删除学生3:修改学生信息4:搜索学生5:显示全部学生信息6:退出并保存4美女美女 11277291473 文法Success{'张自强': ['12652141777', '材料'], '帅哥': ['14388240417', '自动化'], '美女': ['11277291473', '文法']}

10, 字典通讯录modify,不同类型输入检验√

def menu():    print('''\n欢迎使用PYTHON学生通讯录1:添加学生2:删除学生3:修改学生信息4:搜索学生5:显示全部学生信息6:退出并保存''')dict1 = {'张自强': ['12652141777', '材料'], '庚同硕': ['14388240417', '自动化'], '王岩': ['11277291473', '文法']}print(dict1)menu()n = int(input())if n == 3:    name = input() #不要缩进两次,会报错    if name in dict1.keys():        dict1[name] = [input(),input()] #换行输入        print('Success')    else:        print('No Record')    print(dict1)else:    print('ERROR')
{'张自强': ['12652141777', '材料'], '庚同硕': ['14388240417', '自动化'], '王岩': ['11277291473', '文法']}欢迎使用PYTHON学生通讯录1:添加学生2:删除学生3:修改学生信息4:搜索学生5:显示全部学生信息6:退出并保存3张自强000111001010软件工程Success{'张自强': ['000111001010 ', '软件工程'], '庚同硕': ['14388240417', '自动化'], '王岩': ['11277291473', '文法']}

11, 字典,键盘输入键值与字典相联系√

n = int(input())name = input().split(',')#逗号间隔输入的字符串number = input().split(',')zidian = dict(zip(name,number)) #此处将键和值的键盘输入联系在一起 #zip()函数将第i个元素组合在一起 # 字典dict,元组tuple,列表list,相互转化后加()和名称即可for i in range(n):#输入7次    Input = input().split()#空格间隔输入    if Input[0] == 'key':        print(list(zidian.keys())) #key输出方式记熟    elif Input[0] == 'value':        print(list(zidian.values())) #value输出方式记熟    elif Input[0] == 'print':        print(zidian)    elif Input[0] == 'clear':        zidian.clear()    elif Input[0] == 'add':        zidian[Input[1]] = Input[2]    elif Input[0] == 'update':        zidian[Input[1]] = Input[2]#这里好像没体现update和add的区别    elif Input[0] == 'del':        if Input[1] not in zidian: #不是Input[0]而是[1]            print('键不存在')        else:            del zidian[Input[1]]
7Mike,Alley,Ally,Jams250b,360q,210a,333rprint{'Mike': '250b', 'Alley': '360q', 'Ally': '210a', 'Jams': '333r'}key['Mike', 'Alley', 'Ally', 'Jams']value['250b', '360q', '210a', '333r']clearadd MrLiu 99aupdate MsYang 666print{'MrLiu': '99a', 'MsYang': '666'}

12, 正整数分解质因数,map()√

# coding=utf-8# 输入一个正整数x = int(input())y = xresult = []# 下列代码还需要在找到最小质因数后,跳出当前,进行下一次质因数的寻找while y > 1: #用>0会出现死循环,y最后会一直为1,所以自己草稿纸上试一遍    for i in range(2,y + 1): #考虑到没有质因数,只能本身的情况,所以y + 1        if y % i == 0:            y = y // i # //和/相比,可以去掉小数点后0            result.append(str(i))# 把i转换成str,存到列表,便于后面用join拼接字符串列表            break #跳出for循环sorted(result)#从小到大排序# 输出结果,利用map()函数将结果按照规定字符串格式输出if len(result) == 1:#如果列表只有一个元素    print(x,'=',x)else:    print(x,'=','*'.join(map(str,result))) #map()两参数,一个是function函数,一个是一个或多个序列    #'*'.join(map(str,result))表示用*将result列表中的元素按字符串的格式连接起来
6565 = 5*1310001000 = 2*2*2*5*5*5992992 = 2*2*2*2*2*31

上述代码如果将第13行的break改为continue会出现这样的情况

100100 = 2*5*10

continue是跳出该次循环,比如for(int i = 0; i < 10; i++)如果i = 7时遇到continue,就不执行该次循环continue后的代码,跳到i++继续下一次

break是跳出整个for循环,需要注意的是,在嵌套循环中,比如3个for嵌套,只会跳出最内层,也就是最近的for

13, 列表字典嵌套√

# coding=utf-8# 初始化menu1字典,输入两道菜的价格menu1 = {}menu1['fish']=int(input())menu1['pork']=int(input())# menu_total列表现在只包含menu1字典menu_total = [menu1]#初始化+声明# 请在此添加代码,实现编程要求menu2 = {} #记得要声明menu2['fish'] = menu1['fish'] * 2menu2['pork'] = menu1['pork'] * 2menu_total = [menu1,menu2]print(menu_total)
10251[{'fish': 102, 'pork': 51}, {'fish': 204, 'pork': 102}]

14, 无穷算圆周率√

莱布尼茨无穷级数公式:π/4 = 1 – 1/3 + 1/5 – 1/7 + 1/9 …

'''使用无穷级数这个公式计算π值,输入一个小数作为阈值,当最后一项的绝对值小于给定阈值时停止计算并输出得到的π值'''def no_limited(Float):#参数要有    """接收用户输入的浮点数阈值为参数,返回圆周率值"""    #===================Begin====================================    Sum = 1#初始化不要漏    n = 1    from decimal import Decimal #提升计算精度,虽然这个代码里没点用    while True:        a = 1 / (4 * n - 1)        b = 1 / (4 * n + 1)        if Float >= a:            break        Sum -= a        if Float >= b:            break#1,血泪教训,Sum -= 和 Sum += 要放在对应的if后,否则就会出现多加一次的情况,白白浪费半小时        Sum += b        n += 1    return Sum * 4if __name__ == '__main__':    Float = float(input())#直接Float = input()是字符串输入,要注意    SUM = no_limited(Float)    print("{:.8f}".format(SUM))  #保留小数点后八位
0.13.339682540.00000013.14159245

15, 输入问题1√

"""输入半径计算圆的周长和面积"""import mathr = float(input())#如果不加float,单纯input(),会默认为字符串,容易和后续其他类型冲突,解决1:输入这里加float,解决2:后续加上float()等circle = 2.0 * math.pi * rarea = math.pi * r * rprint("周长: {:.2f}".format(circle))print("面积: {:.2f}".format(area))
11.2周长: 70.37面积: 394.08

16, 十进制转其他,函数√

def transfer(n,num):# n转换的进制,num十进制正整数    k = ''# 初始化字符串k    ###########   Begin  ################    if(n == 2):        s = list(bin(num))# unexpected indent为缩进错误        for i in s[2:]:            k = k + i# 实现字符的连接        return k    elif(n == 8):        s = list(oct(num))# 直接输出s,二进制前会有0b,八进制0o,十六进制0x        for i in s[2:]: # 所以从第三个元素开始连接保存下来            k = k + i        return k     elif(n == 16):        s = list(hex(num))        for i in s[2:]:            k = k + i        return k.upper()# .upper()将字符串中的小写转换成大写,使16进制中字母均为大写if __name__=='__main__':    n=int(input())    num=int(input())    result=transfer(n,num)    print(result)# 十进制decimal system, 二进制binary system, 八进制Octal, 十六进制Hexadecimal
2120111100081201701612078

17, 存款买房-C√

"""假设你每个月都是月初发工资,同时会收到上一个月的存款利息。假设所需的首付款百分比为0.30(30%),存款年利率interest_rate 为2.25%(固定),每半年即 6个月 加一次薪水,修改你的程序,计算存够首付需要多少个月。你的程序要给出以下提示并要求用户输入相应的数值:1. 请输入总房价:total_cost2. 请输入年薪:annual_salary3. 请输入月存款比例:portion_saved4. 每半年加薪比例:semi_annual_raise5. 请输入存款年利率:测试用例:请输入总房价:1000000请输入年薪:156800请输入月存款比例:60请输入加薪比例:7输出:需要32 个月可以存够首付"""total_cost,annual_salary,portion_saved,semi_annual_raise = 0.00,0.00,0.00,0.00total_cost = float(input())         # total_cost为当前房价annual_salary = float(input())        # 年薪portion_saved = float(input()) / 100  # 月存款比例,输入30转为30%semi_annual_raise = float(input()) /100     # 输入每半年加薪比例,输入7转化为7% portion_down_payment = 0.3      # 首付比例,浮点数down_payment = portion_down_payment * total_cost   # 首付款print('首付',down_payment)#2,它本身格式没说清楚,这里“首付”后没空格 current_savings = 0       # 存款金额,从0开始number_of_months = 0      # 要存款的月数#####################################Begin#############################################补充你的代码# 计算多少个月才能存够首付款,结果为整数,不足1月按1个月计算,即向上取整monthly_saved = annual_salary / 12 * portion_saved #月存款while current_savings < down_payment:    number_of_months += 1    if number_of_months % 6 == 0:        monthly_saved *= (1 + semi_annual_raise) #涨薪的同时,月存款也增加相应比例    current_savings = current_savings * (1 + 0.0225 / 12) + monthly_saved#1,你他妈漏了本金,current_saved要乘多1    #3,而且,为什么每12个月存款一直少一点呢,因为当前存款算式的位置不对,不要放在number_of_months后,要放在第一个if后。。这逻辑很混乱,应该是题目没讲清楚    if number_of_months % 12 == 0:        print("第{}个月月末有{:,.0f}元存款".format(number_of_months,current_savings))  ######################################End############################################# print(f'需要{number_of_months}个月可以存够首付')

输入输出

3330000111000557.6第12个月有64,821元存款第24个月有141,344元存款第36个月有231,446元存款第48个月有337,307元存款第60个月有461,445元存款第72个月有606,783元存款第84个月有776,699元存款第96个月有975,111元存款需要98个月可以存够首付1200000111000557.6首付 360000.0第12个月月末有64,821元存款第24个月月末有141,344元存款第36个月月末有231,446元存款第48个月月末有337,307元存款需要51个月可以存够首付

所以说,刚毕业拿着9000月薪,不如在宜居的四五线买房,4年首付就够了,不是非得在一线凑个10年才把首付凑齐,再还债20年才还完的

下面是更简洁的代码(重新敲了一遍)

t, a, p, s = 0, 0, 0, 0 # t总房价,a年薪,p月存款比例,s半年加薪比例t = float(input())a = float(input())p = float(input()) / 100 # 除以100转化成百分比s = float(input()) / 100mon_s = a / 12 * p # mon_s月存款first_p = t * 0.3 # first_p首付款current_s = 0 #当前存款months = 0 #需要存款月数while current_s < first_p: #当前存款小于首付款    months = months + 1    if months % 6 == 0:        mon_s = mon_s * (1 + s) #月存款随着每半年涨薪s也涨了    current_s = current_s * (1 + 0.0225 / 12) + mon_s # 注意先+当前总存款*(1 + 月利率),再+月存款    if months % 12 == 0:        print("第{}个月有{:,.0f}元存款".format(months, current_s))print(f'需要{months}个月可以存够首付')

18, 蒙特卡洛(随机数法)算圆周率√

原理

在正方形内部,随机产生n个点,计算点与中心点距离是否大于圆的半径,以此判断是否落在圆内部,设a为落在园内点数,b为正方形内点数(即产生点的总数)a / b ≈ 圆的面积 / 正方形面积,

∴ a / b ≈ (pi * 1 * 1) /(2 * 2) = pi / 4, ∴ pi = 4 * (a / b)

代码

import randomdef monte_carlo_pi(num):    """接收正整数为参数,表示随机点的数量,利用蒙特卡洛方法计算圆周率    返回值为表示圆周率的浮点数"""    #====================Begin===================================    # 补充你的代码    hits = 0.0    for i in range(times):        x,y = random.uniform(-1,1),random.uniform(-1,1)        length = pow(x ** 2 + y ** 2, 1 / 2)        if length < 1:            hits += 1    Pi = 4 * hits / times    return Pi #1,random.uniform(a,b)返回[a,b]之间随机浮点数,示例如下:import random    #print(random.uniform(50,100))    #2,random补充:random.random()返回0与1之间随机浮点数    #3,random补充:random.randint(a,b)返回随机整数N,a <= N <= b    if __name__ == '__main__':    sd = int(input())             #读入随机数种子    random.seed(sd)               #设置随机数种子    times = int(input())          # 输入正整数,表示产生点数量    print(monte_carlo_pi(times))  # 输出圆周率值,浮点数

输入输出

666100003.12842333310000003.143464

19, 梅钦(马青)法算圆周

'''利用梅钦公式计算圆周率的大小'''import mathdef machin_of_pi():    """用梅钦级数计算圆周率,返回圆周率值"""    #################Begin####################################        pi = 0.00    for i in range(20):        pi += 10 ** 16 * (-1) ** i * 4 / (2 * i + 1) * (4 / 5 ** (2 * i + 1) - 1 / 239 ** (2 * i + 1))    #1,一个确保精度(小数点后正确位数满足题目)的方法,计算小数点后7位,就计算pi * 10^7,最后再缩小10^7倍即可    #################End####################################    return pi / (10 ** 16)    if __name__ == '__main__':    cal_pi = machin_of_pi()  # 调用判断类型的函数    print(cal_pi)            # 输出函数运行结果
3.1415926535897936

20, 列表最基本操作√

#List.append(), List.insert(index,元素), del List[index], #List.pop(index), List.remove(obj), #index即下标索引List = []while True:    try:        a = input()        List.append(a)    except:        breakdele = List.pop()List.insert(2,dele)del List[1]print(dele)print(List)

输入输出

1qq2qq3qq4qq5qq^Z5qq['1qq', '5qq', '3qq', '4qq']

输入完child后回车,ctrl,z一起按,再回车

21,列表转元组√

#coding=utf-8#创建并初始化menu_list列表menu_list = []while True:    try:        food = input()        menu_list.append(food)    except:        break#请在此添加代码,对menu_list进行元组转换以及元组计算等操作,并打印输出元组及元组最大的元素menu_tuple = tuple(menu_list) #转换成元组,前面还有个变量名,#不是.函数的,不能直接转换print(menu_tuple)print(max(menu_tuple))

输入输出

1qq2qq3qq4qq5qq^Z('1qq', '2qq', '3qq', '4qq', '5qq')5qq

22, 列表输出问题1√

"""一些物品,不知道有多少个,3个3个数的话,还多出2个;5个5个数则多出3个;7个7个数也会多出2个。输入一个正整数,从小到大依次输出所有不超过输入数字且满足条件的物品数量,有多个答案时每行输出一个。例如输入:200输出:23128"""n = int(input())L = []##############Begin#####################Sum = 0for i in range(10,n+1):    if i%3 == 2 and i%5==3 and i%7==2:        Sum += 1        L.append(i)if not Sum:    print("No solution!")else:    for i in L:        print(i)#此处是print(i)而不是print(L[i])
输入输出110023输入输出220023128

23, 列表删除数据(巨坑)√

ls_1 = list(map(int,input().split())) # 2,键盘输入列表元素的方法,熟记n = int(input())#要删除的元素if n not in ls_1:    print("NOT FOUND")else:    for i in range(len(ls_1)-1,-1,-1): # 1,反向检索元素的值,避免正向检索产生out of range,熟记        if ls_1[i] == n:            ls_1.remove(n)    print(ls_1)

输入输出

34 34 56  77 8 8   4 33 2 2 2  3 4 5634[56, 77, 8, 8, 4, 33, 2, 2, 2, 3, 4, 56]

24, 列表去重√

#coding=utf-8menu = list(input().split(","))#不要用while:True,否则#不符合输入逗号间隔的形式res=[]for i in menu:    if i not in res:        res.append(i)print(res)

输入输出

ak,oj,leetcode,ak,ak,ak,666,233,233['ak', 'oj', 'leetcode', '666', '233']

25, 列表切片√

menu = []while True:    try:        food = input()        menu.append(food)    except:        breaklength = len(menu)print(menu[-3:])print(menu[0:length:3])

因为是字符串,输入完后,回车,再Ctrl + z + 回车,即可输出
如果改成int, 就是food = int(input()),最后回车两次即可输出
输入输出

fishporkwolfwifewifichicken^Z['wife', 'wifi', 'chicken']['fish', 'wife']或者1234567^Z['5', '6', '7']['1', '4', '7']

如果想以空格间隔在同一行输入,那就得只能改数字且看代码形式

menu = list(map(int, input().split()))length = len(menu)print(menu[::3])print(menu[-3:])

输入输出

1 23 4 6 7 88 32 1 5[1, 6, 32][32, 1, 5]

26, 列表嵌套字典排序√

n = int(input())list1 = []for i in range(n):    name,age = input().split() #新方法:输入如Tom 18的字符串    dict1 = {'name':name,'age':int(age)} #直接构造的方法;这里要用int(age)    list1.append(dict1) #得到一个元素为字典的列表list2 = sorted(list1,key = lambda x:x['age']) #lambda新方法,lambda x:x[1]按二维列表第二个元素的ASCII值排序list3 = sorted(list1,key = lambda x:x['name']) #而lambda x:x['键']可以按列表嵌套字典中对应键的值排列print(list2)print(list3)

输入输出

5Tom 18MIke 12Ton 18Tomm 18Ally 19[{'name': 'MIke', 'age': 12}, {'name': 'Tom', 'age': 18}, {'name': 'Ton', 'age': 18}, {'name': 'Tomm', 'age': 18}, {'name': 'Ally', 'age': 19}][{'name': 'Ally', 'age': 19}, {'name': 'MIke', 'age': 12}, {'name': 'Tom', 'age': 18}, {'name': 'Tomm', 'age': 18}, {'name': 'Ton', 'age': 18}]

27, 列表合并与降序(键盘输入)√

list1 = list(map(int,input().split())) #2,map的第一个参数是函数,第二个从参数是序列list2 = list(map(int,input().split()))list1 += list2list1.sort(reverse = True)#1,reverse不要漏,不要只打出来Trueprint(list1)

输入输出

73 71 -5 66 1999 1024520 99 1314[1999, 1314, 1024, 520, 99, 73, 71, 66, -5]

28, 列表的增删改√

#coding=utf-8#创建并初始化Guests列表guests = []while True:    try:        guest = input()        guests.append(guest)    except:        break#请在此添加代码,对guests列表进行插入、删除等操作deleted_guest = guests.pop(-1)guests.insert(2,deleted_guest)del guests[1]print(deleted_guest)print(guests)

输入输出

2qq  1qq3qq6qq5qq^Z5qq['2qq', '5qq', '3qq ', '6qq']

29, 列表的属性(输入检测)√

#coding=utf-8#List.remove('值')List=[]n=int(input())foriinrange(n):Listinput=input().split()#作为输入的检测operate=Listinput[0]#检测每次循环第一次输入是否为题目要求的条件ifoperate=='insert':#直接用单引号引起来的字符串表示List.insert(int(Listinput[1]),int(Listinput[2]))#两个整数的输入要加intelifoperate=='remove':List.remove(int(Listinput[1]))elifoperate=='append':List.append(int(Listinput[1]))elifoperate=='sort':List.sort()elifoperate=='pop':List.pop()elifoperate=='reverse':List.reverse()elifoperate=='print':print(List)
15append 4append -9append 85print[4, -9, 85]insert 2 0remove -9sortprint[0, 4, 85]append 890append 23print[0, 4, 85, 890, 23]popreverseprint[890, 85, 4, 0]print[890, 85, 4, 0]

30, 集合,键盘输入判断后续操作

n = int(input())name = input() #但注意name和myset的输入,split只能出现一次myset = set(name.split()) #这样可以把空格隔开的中文加入集合    for i in range(n):    lp = input().split() #还有,设lp,意味着list_input,尽量不要写太复杂的名称,影响思路    if lp[0] == 'print':        list_myset = sorted(list(myset)) #这里有问题,不要用 = list(myset).sort(),非常混乱,除非你分开        print(list_myset)    elif lp[0] == 'del':        myset.remove(lp[1])    elif lp[0] == 'clear':        myset.clear()    elif lp[0] == 'add':        myset.add(lp[1])    elif lp[0] == 'update':        myset.update(lp[1:])
6吴亦凡 陈伟霆 李嘉欣 刘德华 周星驰 吴彦祖print['刘德华', '吴亦凡', '吴彦祖', '周星驰', '李嘉欣', '陈伟霆']del 周星驰add 大哥print['刘德华', '吴亦凡', '吴彦祖', '大哥', '李嘉欣', '陈伟霆']update Gaga 朋友 美女print['Gaga', '刘德华', '吴亦凡', '吴彦祖', '大哥', '朋友', '李嘉欣', '美女', '陈伟霆']

31, 回文素数

输入一个正整数,输出小于这个数的所有回文素数

import mathdef is_prime(n):    """判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False。减小判定区间,减少循环次数,提升效率"""    #======================Begin=================================    # 补充你的代码    #=========================End==============================    a = True    if n == 1:        a = False    for i in range(2,int(math.sqrt(n)) + 1): #这里的int不要老漏        if n % i == 0:            a = False    return adef plalindrome_prime(number):    """接收一个正整数参数number,遍历从0到number之间的所有整数,    若某个数是素数,且转为字符串后是回文字符串,则称其中回文素数    找出并在同一行中输出小于number的所有回文素数,每个数字后一个空格,函数无返回值。"""    #======================Begin=================================    for i in range(2,number):        if is_prime(i):            b = str(i)            reverse_b = b[::-1] #逆序输出字符串,表示b[-1:-len(a)-1:-1],包左不包右            if b == reverse_b:                print(b,end = ' ')                            #=========================End==============================positive_int = int(input())         plalindrome_prime(positive_int)      
5652 3 5 7 11 101 131 151 181 191 313 353 373 383

32,回车结束输入

list = [] #先声明列表不可少while 1:    li = input().split()#1,当类型冲突时,不要规定类型,直接li = input()      if len(li) == 0: #4,血的教训:不要用if li == "",要记熟if len(li) == 0  break,这才是回车结束输入的正确方式        break # 3,回车结束输入    else:        list.append(li) #2,这个形式要记住,列表名.append(input的变量名)list_1 = sorted(list,key = lambda x:float(x[1][:-1])*1000 if x[1][-1] == 't' else float (x[1][:-2]))print(list_1)
鸽子 33kg河马 0.9t帅哥 70kg师傅 90kg[['鸽子', '33kg'], ['帅哥', '70kg'], ['师傅', '90kg'], ['河马', '0.9t']]

33, 个人所得税

"""用户输入应发工资薪金所得、五险一金金额和个税免征额,输出应缴税款和实发工    结果保留小数点后两位。当输入数字小于0 或等于0 时,输出“error”。    实发工资 = 应发工资 - 五险一金 - 个人所得税    建议使用以下变量名:    salary:每月应发工资薪金    insurance_fund:五险一金    exemption:个税免征额    educted_amount:速算扣除数    测试用例    输入(冒号前是提示性文字,冒号后的数字为用户输入)    请输入应发工资薪金金额:16000    请输入五险一金金额:4000    请输入个税免征额:5000    输出    应缴税款490.00 元,实发工资11510.00 元。    """    # ====================Begin===================================def income_tax():    salary,insurance_fund,exemption = 0.00,0.00,0.00    salary = float(input())#关键1:浮点数未初始化    insurance_fund = float(input())    exemption = float(input())    if salary <= 0 or insurance_fund <= 0 or exemption <= 0:        print("error")    tax_forehead = salary - insurance_fund - exemption    tax = 0.00    if tax_forehead  0:#最开始漏了一种小于0的条件,所以初始应声明加初始化为0,减少出错率        tax = tax_forehead * 0.03 - 0    elif tax_forehead  3000:        tax = tax_forehead * 0.10 - 210    elif tax_forehead  12000:        tax = tax_forehead * 0.20 - 1410    elif tax_forehead  25000:        tax = tax_forehead * 0.25 - 2660    elif tax_forehead  25000:        tax = tax_forehead * 0.30 - 4410    elif tax_forehead  55000:        tax = tax_forehead * 0.35 - 7160    elif tax_forehead > 80000:        tax = tax_forehead * 0.45 - 15160    true_salary = salary - tax - insurance_fund;#关键2:同时要注意,你把过程想复杂了,直接拿tax_forehead * 相应的税率即可    print("应缴税款{:.2f}元,实发工资{:.2f}元。".format(tax,true_salary))#改动if __name__ == "__main__":        income_tax()#关键3:这步要记熟    # ======================End=================================    # 调用函数完成计算和输出
1300021003500应缴税款530.00元,实发工资10370.00元。

34, 割圆术

'''编程实现割圆法计算圆周率,并输出分割不同次数时边数、圆周率值以及计算所得圆周率值与math库中的圆周率值的偏差。'''import mathdef cutting_circle(n):      # n为分割次数    """接收表示分割次数的整数n为参数,计算分割n次时正多边形的边数和圆周率值,返回边数和圆周率值"""    x = 1  # 初始边长    sides = 6  # 初始边数    #######################Begin############################    # 补充你的代码    def length(x):#由当前边长计算下一边长        h = 1 - math.sqrt(1 - (x / 2)**2)#2,python中多少次方用**表示        return math.sqrt(h**2 + (x / 2)**2)#3,math.sqrt可算平方根,pow可算其他的    for i in range(n): #函数最后只能return一个参数        sides *= 2    #当前边数        x = length(x) #当前边长        pi = x * sides        ########################End###########################    return pi / 2#4,注意初始条件,半径为1,所以圆初始周长近似于2 * 3.14 * 1,所以要除以2if __name__ == '__main__':    times = int(input())          # 割圆次数    Sides = 6 * 2**times #format传参数时,一定要存在这个参数,不然报错    Pi = cutting_circle(times)    print("分割{}次,边数为{},圆周率为{:.6f}".format(times,Sides,Pi))    print("math库中的圆周率常量值为{:.6f}".format(math.pi))#1,不论千分位的逗号还是浮点数保留6位,大括号里的冒号":"不可少
1分割1次,边数为12,圆周率为3.105829math库中的圆周率常量值为3.1415935分割5次,边数为192,圆周率为3.141452math库中的圆周率常量值为3.141593100分割100次,边数为7605903601369376408980219232256,圆周率为3.141593math库中的圆周率常量值为3.141593

35, 二维列表排序√

list1 = [('dungeon',7),('winterfell',4),('bran',9),('meelo',6)]list2 =  [[ 'Angle', '0121701100106',99], [ 'Jack', '0121701100107',86], [ 'Tom', '0121701100109',65], [ 'Smith', '0121701100111', 100], ['Bob', '0121701100115',77], ['Lily', '0121701100117', 59]]m = int(input())n = int(input())new_list1 = sorted(list1,key = lambda x:x[1],reverse = False) # 1,不要漏keynew_list2 = sorted(list2,key = lambda x:x[0],reverse = False) #5,此时的lambda用于对列表中所有元素排序的准则,此处:按第一个元素的ASCII值排序new_list3 = sorted(list2,key = lambda x:x[2],reverse = False)print(new_list1[:m]) #2,a[:n]取出列表的前n个元素,且当n > len(a)时不会报错print(new_list2[:n]) #3,用法补充:a[:-3]取出a从第0个到倒数第三个元素之前的元素print(new_list3[n:]) #4,补充:a[2:]取出第二个元素之后的元素,即从第三个开始取

输入输出

32[('winterfell', 4), ('meelo', 6), ('dungeon', 7)][['Angle', '0121701100106', 99], ['Bob', '0121701100115', 77]][['Bob', '0121701100115', 77], ['Jack', '0121701100107', 86], ['Angle', '0121701100106', 99], ['Smith', '0121701100111', 100]]

36, 二鼠打洞

"""有一堵十尺厚的墙,两只老鼠从两边向中间打洞。大老鼠第一天打洞一尺,小老鼠也是打洞一尺。大老鼠每天的打洞进度是前一天的一倍,小老鼠每天的进度是前一天的一半。计算并输出它们几天可以相逢,相逢时各打了多少尺。输入格式:输入1 个整数,代表墙的厚度,单位为尺输出格式:第一行输出1 个整数,表示相遇时所需的天数第二行输出2 个浮点数,分别为小鼠和大鼠打洞的距离,单位为尺,保留小数点后1 位数字。"""n = int(input())sMouse,sRat,dMouse,dRat = 1,1,0,0day,time = 0,1#还是要声明的#错误代码sMouse = 1, sRat = 1, dMouse = 0, dRat = 0, day = 1#小大鼠速度,小大鼠打洞距离while n > 0:    if n - sMouse - sRat < 0:#某一天打完        time = n / (sMouse + sRat)#当天消耗时间    n -= (sMouse + sRat)#不要漏    dMouse += sMouse * time    dRat += sRat * time    sMouse /= 2    sRat *= 2    day += 1print(day)print("{:.1f} {:.1f}".format(dMouse,dRat))
1041.8 8.2

37, 存款买房-B

"""只有在第6、12、18……等月份时才加薪)。写一个程序计算需要多少个月才能攒够钱付首付款。与之前一样,假设所需的首付款百分比为0.30(30%)。你的程序要给出以下提示并要求用户输入相应的数值:1. 请输入总房价:total_cost2. 请输入年薪:annual_salary3. 请输入月存款比例:portion_saved4. 每半年加薪比例:semi_annual_raise测试用例请输入总房价:1000000请输入年薪:156800请输入月存款比例:60请输入加薪比例:7输出:需要33 个月可以存够首付"""#2,简单的注释很重要,便于DEBUG和复盘total_cost,annual_salary,portion_saved,semi_annual_raise = 0.00,0.00,0.00,0.00#1,初始化不能忘,习惯性初始化可以节省你十几个小时total_cost = float(input())         # total_cost为当前房价annual_salary = float(input())        # 年薪portion_saved = float(input()) / 100  # 月存款比例,输入30转为30%semi_annual_raise = float(input()) /100     # 输入每半年加薪比例,输入7转化为7%portion_down_payment = 0.3      # 首付比例,浮点数down_payment = total_cost * portion_down_paymentprint('首付 %.1f'%down_payment)current_savings = 0 # 存款金额,从0开始number_of_months = 0monthly_salary = annual_salary/12 #月工资monthly_deposit = monthly_salary * portion_saved # 月存款# 计算多少个月才能存够首付款,结果为整数,不足1月按1个月计算,即向上取整                                                             while current_savings 所以还得系统记忆下新函数的用法,找CSDN的就行;;;然后。.0f表示保留0位小数点print(f'需要{number_of_months}个月可以存够首付')#3,记熟如此输出没有空格
32200003500006020首付 966000.0第12个月月末有231,000元存款第24个月月末有563,640元存款需要35个月可以存够首付

38,try, except

def Div(x,y):    try:        n = x / y        print(n)    except:        print("被0除!\nNone")if __name__ == '__main__':    x=int(input())    y=int(input())    Div(x,y)
36132.769230769230769

39, 计算三角形面积

import mathdef area(a,b,c):#利用海伦公式的半周长p,以及try,except    try:        p = (a + b + c) / 2#如果三角形不存在,p-某边会出现 0):        print("{0:.3f}".format(area(a,b,c)))    else:        print("出现如下问题: 数据错误,不能构成三角形\n0.000")
12,6,18出现如下问题: 数据错误,不能构成三角形0.0003,5,76.495

40, 保留多少位小数

# coding=utf-8from math import pi as PIn = int(input())# 请在此添加代码,实现圆的面积计算,并输出面积结果area = PI * n ** 2print('%.2f'%area) #python保留多少位小数输出,注意中间不要逗号,有两个百分号
450.27

41, list基础√

#List.append(), List.insert(index,元素), del List[index], #List.pop(index), List.remove(obj), #index即下标索引List = []while True:    try:        a = input()        List.append(a)    except:        breakdele = List.pop()List.insert(2,dele)del List[1]print(dele)print(List)

42, list(range())√

#coding=utf-8#创建并读入range函数的相应参数lower = int(input()) #下限整数upper = int(input()) #上限整数step = int(input()) #间隔步长#请在此添加代码,实现编程要求data_list = list(range(lower,upper,step))length = len(data_list)difference = max(data_list) - min(data_list)print(data_list)#输出列表print(length)#列表元素个数print(difference)#最大最小值差值

输入输出

2133[2, 5, 8, 11]49

43, lambda使用

# coding=utf-8a = int(input())b = int(input())# 请在此添加代码,使用lambda来创建匿名函数,能够判断输入的两个数值的大小MAXIMUM = lambda a,b:max(a,b)MINIMUM = lambda a,b:min(a,b) #注意lambda后不需要要括号'()'# 输出较大的值和较小的值print('较大的值是:%d' % MAXIMUM(a,b))print('较小的值是:%d' % MINIMUM(a,b))
-9917较大的值是:17较小的值是:-99

45, assert()

def mysum(x):    Sum = 0    try:        for i in range(1,x+1):            Sum += 1 / i        assert(Sum >= 1)#注意assert()的位置    except:        print("出现了问题... n必须是正整数")    else:        print("一切正常...")    return Sum########## End ##########if __name__ == '__main__':    x=eval(input())    print(mysum(x))
2一切正常...1.510一切正常...2.9289682539682538

46, 递归函数求阶乘

# coding=utf-8# 输入正整数nn = int(input())# 请在此添加代码,对输入的正整数n进行阶乘运算,并输出计算结果。def fact(n):    if n == 0:        return 1    else:        return n * fact(n - 1) #递归函数方法print(fact(n)) #输出别忘了
5120

47,迭代器基本操作

List=[]#创建一个空列表member=input()#读取键盘输入的成员foriinmember.split(','):#循环遍历用“,”分隔成员result=i#分隔后的元素保存到result中List.append(result)#把成员元素添加到list列表中#请在此添加代码,将List转换为迭代器的代码#**********Begin*********#Iteralist=iter(List)#**********End**********#whileTrue:try:#请在此添加代码,用next()函数遍历IterList的代码num=next(Iteralist)#遍历到Iteralist元素result=int(num)*2#Iteralist元素乘2保存到result中print(result)exceptStopIteration:break
6,7,19,21,341214384268

48,定义类Animal

 ########## Begin ##########class Animal:    def __init__(self,name,kind):        self.__name = name        self.__kind = kind    @property#把下方的方法都变成了静态属性    def getName(self):        return self.__name    def getKind(self):        return self.__kind    def changeKind(self,kind):        self.__kind = kind    def delKind(self):        del self.__kind    KIND = property(getKind,changeKind,delKind,"动物类别") #property()把方法变成静态属性if __name__ == '__main__':    a1 = Animal("parrot","bird")    #print(a1.getName)#注意字母大小写,静态属性引用不许需要()    print(a1.getName)#对象名.方法    print(a1.KIND)#对象名.属性    a1.KIND = "Polytelis"    print(a1.KIND)    del a1.KIND
parrotbirdPolytelis

49,定义继承类Cat

 ########## Begin ##########class Animal:    def __init__(self,name,kind):        self.__name = name        self.__kind = kind    @property#把下方的方法都变成了静态属性    def getName(self):        return self.__name    def getKind(self):        return self.__kind    def changeKind(self,kind):#私有属性除了定义参数里,前面不加__,其他地方都要        self.__kind = kind    def delKind(self):        del self.__kind    KIND = property(getKind,changeKind,delKind,"动物类别")    def talk(self):        print("I can speak.")    def myprint(self):        print("name={0},kind={1}".format(self.__name,self.__kind)) #property()把方法变成静态属性class Cat(Animal):#python中缩进是常犯错误    def __init__(self,name,kind,food,enemy):#这里要增加food和enemy两个属性        super().__init__(name,kind)#实现子类与父类的联系,除了super().还可以Animal.  也就是父类名.__init__(self......)        self.__food = food        self.__enemy = enemy    def talk(self):        print("喵喵")    def catprint(self):        print("food={0},enemy={1}".format(self.__food,self.__enemy))    def catchmouse(self):        print("I catch a mouse.")#建议直接复制题目,比如这次漏了一个点    def myprint(self):#函数后面必须带self        Animal.myprint(self)        self.catprint()#子类本身的用self.函数(),父类中的用父类名.函数()这样的形式                if __name__ == '__main__':    a1 = Animal("parrot","bird")    #print(a1.getName)#注意字母大小写,静态属性引用不许需要()    print(a1.getName)#对象名.方法    print(a1.KIND)#对象名.属性    a1.KIND = "Polytelis"    print(a1.KIND)    del a1.KIND    a2 = Animal("octopus", "fish")    a2.talk()    a2.myprint()#下面这行,通过子类Cat创建c1实例,参数可直接写在括号里面    c1 = Cat("cat","feline",["fish","meat","milk","icecream"],["老鹰","豹子"])#这一行报错:missing four required positional arguments是因为调用时少了四个参数,要在括号中把参数加上    c1.talk()    c1.catprint()    c1.myprint()    c1.catchmouse()    
parrotbirdPolytelisI can speak.name=octopus,kind=fish喵喵food=['fish', 'meat', 'milk', 'icecream'],enemy=['老鹰', '豹子']name=cat,kind=felinefood=['fish', 'meat', 'milk', 'icecream'],enemy=['老鹰', '豹子']I catch a mouse.

50,代码的封装

# coding=utf-8# 输入两个正整数a,ba = int(input())b = int(input()) #最大公约数你会了,最大公约*最小公倍=两数乘积# 请在此添加代码,求两个正整数的最小公倍数def _gcd(a,b): #private函数    i = 1    while(i > 0): #while也是需要冒号':'的        i = a % b        if i == 0:            return b        elif i == 1:            return 1        else:            a = b            b = idef lcm(a,b): #public函数    PlusSum = int(a * b / _gcd(a,b))    return PlusSum# 调用函数,并输出a,b的最小公倍数print(lcm(a,b))
142142

51, 圆类

#测试代码:计算n个球体的表面积和体积之和,以及m个圆柱体的表面积和体积之和。PI = 3.14class Ball():    def __init__(self,r):        self.r = r    def S(self):        self.s = 4 * PI * r * r        return self.s    def V(self):#类中不加self的属性是全局的,不加self是本地变量,加self是实例变量        self.v = 4 / 3 * PI * r * r * r        return self.vclass Cylinder():    def __init__(self,r,h):        self.r = r        self.h = h    def S(self):        self.s = PI * self.r * self.r * 2 + PI * 2 * self.r * self.h        return self.s    def V(self):        self.v = PI * self.r * self.r * self.h        return self.vif __name__=='__main__':    ls_ball=eval(input())  #以列表方式输入n个球的半径    ls_cylinder=eval(input())  #以嵌套列表的方式输入m个半径和高    #计算并输出n个球的表面积和体积之和,小数点保留2位    s1 = 0    v1 = 0    s2 = 0    v2 = 0    for r in ls_ball:        a = Ball(r)        s1 += a.S()        v1 += a.V()     print("球的表面积之和={:.2f} 球的体积之和={:.2f}".format(s1,v1))    for i in ls_cylinder:        b = Cylinder(i[0],i[1])        s2 += b.S()        v2 += b.V()    print("圆柱体的表面积之和={:.2f} 圆柱体的体积之和={:.2f}".format(s2,v2))    #计算并输出m个圆柱体的表面积和体积之和,小数点保留2位
[3.3,16,12,1][[1,12],[3.2,5],[2,15]]球的表面积之和=5173.34 球的体积之和=24537.79圆柱体的表面积之和=459.95 圆柱体的体积之和=386.85

52,文件

src/Step1, C:\Users\1\Desktop\python\src\Step1

test.txt

hello,worldhello,Pythonhello,man

test2.txt

人生苦短,要学Python21ekjkj

文件.py

#coding=utf-8#输入nn = int(input())with open('src/Step1/test.txt') as file_object:    lines = file_object.readlines()# 请在此添加代码,实现编程要求#********** Begin *********#i = 0for line in lines:    print(line.rstrip())    i = i + 1    if i == n:        break

文件2.py

#coding=utf-8#输入字符串s = input()# 请在此添加代码,将字符串s输入到test2.txt中#********** Begin *********#with open('src/Step1/test2.txt','a') as example:    example.write(s)#********** End **********##输出test2.txt中的内容with open('src/Step1/test2.txt',encoding = 'utf-8') as file_object:    lines = file_object.readlines()#注意,上面with open()中,最后不加encoding = 'utf-8'for line in lines:#的话,打开的文件中有中文就会报错    print(line.rstrip())#因为txt文件是utf-8编码,文本文件方式打开时,编码需转utf-8

文件3.py

'''1、使用open函数打开文件(src/step1/poit1)2、使用read函数读出整个文件。3、输出所读文件内容。4、关闭文件。5、使用read函数读出文件的前10个字并输出。6、返回文件头,读取一行并输出。7、使用tell输出当前文件指针的位置。8、定义一个字符串变量保存如下信息:‘人生苦短,要学Python’9、以写方式打开一个文件,保存上述信息(src/step1/poit2.txt)。关闭该文件。10、打开刚才保存的文件,使用readlines读出并输出文件内容。'''#--------------------begin ------------------------f1=open('src/Step1/test.txt','r',encoding="utf8")fff = f1.read()print(fff)#文件是流,读了一个就向前移动一个,如果想从头开始读,要么#关闭了再开一次,要么f1.seek(0),移动到最开始的位置f1.close()f1=open('src/Step1/test.txt','r',encoding="utf8")fff2 = f1.read(10)print(fff2)f1.seek(0)#移动到最开始的位置,不用关闭再打开fff3 = f1.readline()print(fff3)fff4 = f1.tell()print(fff4)f1.close()fff5 = '人生苦短,要学Python'f2=open('src/Step1/test2.txt','w',encoding="utf8")f2.writelines(fff5)f2.close()f2=open('src/Step1/test2.txt','r',encoding="utf8")fff6 = f2.readlines()print(fff6)

53,判断两文件是否相同

# 判断两个文件是否相同。要求用函数实现文件比较功能,在main函数中进行验证。# 下述函数完成文件是否相同的比较功能def compareFile(list1,list2):    #请在此添加代码,实现文件是否相同的判断    # 如果相等返回[1,0,0]    # 如果不相等返回[0,a,b] a,b表示第一个不相等字符所在的行号和列号    #********** Begin *********#    len1 = len(list1)    len2 = len(list2)    minlen1 = min(len1,len2)#返回两个列表较小的行数作为循环次数    for i in range(minlen1):        if list1[i] != list2[i]:            minlen2 = min(len(list1[i]),len(list2[i]))#返回出现不同的行数中,较小的列数;这行漏len(list1[i])的len了            for j in range(minlen2):                if list1[i][j] != list2[i][j]:                    return [0,i+1,j+1]#记住主函数直接等于这里列表的方式            else:#else两处缩进很重要                return [0,i+1,1]#此时只能是这一行长度不等    else:        if len1 != len2:            return [0,minlen1+1,1]#i+1,minlen1+1里的1容易漏        else:            return [1,0,0]    #********** End *********## 定义函数main,完成文件名输入、比较函数调用和结果输出功能def main():    # 输入两个文件所在路径和文件名,如:d:\temp\t1.txt    str1=input('')    str2=input('')    #请在此添加代码,完成相应功能    #********** Begin *********#    file1 = open(str1,'r')    file2 = open(str2,'r')#只读的方式打开文件    #用readlines方法把文件读入一个列表对象    isfile1 = file1.readlines()    isfile2 = file2.readlines()    file1.close()    file2.close()    result,row,col = compareFile(isfile1,isfile2)    if result == 1:        print("这两个文件相等")    else:        print("这两个文件在{0}行{1}列开始不相等".format(row,col))    #********** End *********#main()

54,random模块

import mathimport randomimport os#help(math)print(random.random())#0-1浮点数print(random.randint(15,66))#(a,b)间整数print(random.uniform(15.2,19.9))#(a,b)间浮点数print(random.choice("abcde"))print(random.choice([1,3,5,7,9]))print(os.path.abspath(os.curdir))#返回当前路径C:\Users\1\Desktop\新python
0.0272129551879004565118.226695874693007b7C:\Users\1\Desktop\新python

55,datetime模块

from datetime import datetime, date, timeprint("1--------")print(datetime.now())#返回当天日期时间t = datetime.now()print(datetime.date(t))#返回当天日期print(datetime.time(t))#返回当天时间print("2--------")print(datetime.ctime(t))#返回“星期,月,日,时,分,秒,年”格式的字符串print(datetime.utcnow())#返回当前utc日期和时间print(datetime.timestamp(t))#返回当天时间戳print(datetime.fromtimestamp(datetime.timestamp(t)))#根据时间戳返回当天 datetimeprint(datetime.utcfromtimestamp(datetime.timestamp(t)))#根据时间戳返回UTC datetimeprint("3--------")date1 = date(2018,2,12)time1 = time(20,53,48)print(datetime.combine(date1,time1))#绑定日期,时间,生成新得datetime对象print("4--------")newDatetime = datetime.strptime("12/2/18 20:59", '%d/%m/%y %H:%M')#用字符串和指定格式生成新的datetime对象print(newDatetime)print("5--------")for tv in datetime.timetuple(t):#遍历    print(tv)print(t.isocalendar())#ISO格式的日期print(t.strftime("%Y年%m月%d日 %H:%M:%S %p"))#指定格式输出日期函数
1--------2023-01-01 02:03:53.6866622023-01-0102:03:53.6876602--------Sun Jan  1 02:03:53 20232022-12-31 18:03:53.6886581672509833.687662023-01-01 02:03:53.6876602022-12-31 18:03:53.6876603--------2018-02-12 20:53:484--------2018-02-12 20:59:005--------202311235361-1datetime.IsoCalendarDate(year=2022, week=52, weekday=7)2023年01月01日 02:03:53 AM

总结

turtle库,jieba库还没学,

random库,datetime库,.format(),字典,元组等不熟悉

文件和类不太行

两个月估计才3000行代码量,离10000的入门还有距离

再给大家补充个我复习的方法

首先我们期末试考头歌上的代码可能会多点,所以我就先把这60道代码,先粘贴到VS code测试1,分为测试1和2,先看懂代码,然后自己再在测试2敲一遍,输出一样就算过,看图:

最后附上二级资源:

Python计算机二级过考指南_N._的博客-CSDN博客_”输入: \”10,@”

【备考】计算机python二级过考指南(考点+典例)_N._的博客-CSDN博客_计算机二级python

祝大家二级全部优秀

33333字,求个收藏点赞