Python头歌答案入门基础代码60例

Posted 千帐灯无此声

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python头歌答案入门基础代码60例相关的知识,希望对你有一定的参考价值。

头歌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))

#集合的显著特点可以去掉重复元素

输入输出

5
haha
Ted
thx
haha
Ted
3

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 = 1
for 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 = 998244353

for 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)])

输入输出

3
9
5
153
1000
506125771395
1000000
498614221748437

 4,李白买酒√

"""大诗人李白,提着酒壶,从家里出来,酒壶中有酒若干。他边走边唱:无事街上走,提壶去买酒,
遇店加一倍,见花喝一斗,五遇店和花,喝光壶中酒,计算并输出壶中原有酒几斗?
"""#正向:店-花-店-花-店-花-店-花-店-花。
#解题思路:让李白按路线逆向走一遍,逆向:花-店*5,遇花加一斗,遇店减半
wine = 0#最后酒壶空了,记得初始化
for i in range(5):
    wine += 1
    wine /= 2
print(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
超人 22001kg
Apex 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 James
MIke,你好!
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"] = 50
print(menu_dict["fish"])
menu_dict["fish"] = 100
del menu_dict["noodles"]
print(menu_dict)
noodles
65
fish
30
beef
190
^Z
30
'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)
fish
35
apple
7
banana
3
beef
55
^Z
fish
apple
banana
beef
35
7
3
55

 输入完后换行,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]]
7
Mike,Alley,Ally,Jams
250b,360q,210a,333r
print
'Mike': '250b', 'Alley': '360q', 'Ally': '210a', 'Jams': '333r'
key
['Mike', 'Alley', 'Ally', 'Jams']
value
['250b', '360q', '210a', '333r']
clear
add MrLiu 99a
update MsYang 666
print
'MrLiu': '99a', 'MsYang': '666'

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

# coding=utf-8

# 输入一个正整数
x = int(input())
y = x
result = []
# 下列代码还需要在找到最小质因数后,跳出当前,进行下一次质因数的寻找
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列表中的元素按字符串的格式连接起来
65
65 = 5*13
1000
1000 = 2*2*2*5*5*5
992
992 = 2*2*2*2*2*31

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

100
100 = 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'] * 2
menu2['pork'] = menu1['pork'] * 2
menu_total = [menu1,menu2]

print(menu_total)
102
51
['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 * 4

if __name__ == '__main__':
    Float = float(input())#直接Float = input()是字符串输入,要注意
    SUM = no_limited(Float)
    print(":.8f".format(SUM))  #保留小数点后八位
0.1
3.33968254 

0.0000001
3.14159245

15, 输入问题1√

"""
输入半径计算圆的周长和面积


"""
import math
r = float(input())#如果不加float,单纯input(),会默认为字符串,容易和后续其他类型冲突,解决1:输入这里加float,解决2:后续加上float()等

circle = 2.0 * math.pi * r
area = math.pi * r * r
print("周长: :.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
2
120
1111000

8
120
170

16
120
78

17, 存款买房-C√

"""
假设你每个月都是月初发工资,同时会收到上一个月的存款利息。假设所需的首付款百分比为0.30(30%),
存款年利率interest_rate 为2.25%(固定),每半年即 6个月 加一次薪水,修改你的程序,计算存够首付需要多少个月。
你的程序要给出以下提示并要求用户输入相应的数值:
1. 请输入总房价:total_cost
2. 请输入年薪:annual_salary
3. 请输入月存款比例:portion_saved
4. 每半年加薪比例:semi_annual_raise
5. 请输入存款年利率:
测试用例:
请输入总房价:1000000
请输入年薪:156800
请输入月存款比例:60
请输入加薪比例:7
输出:需要32 个月可以存够首付
"""
total_cost,annual_salary,portion_saved,semi_annual_raise = 0.00,0.00,0.00,0.00
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 = 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个月可以存够首付')

输入输出

3330000
111000
55
7.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个月可以存够首付

1200000
111000
55
7.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()) / 100

mon_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 random

def 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))  # 输出圆周率值,浮点数

输入输出

666
10000
3.1284

23333
1000000
3.143464

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

'''
利用梅钦公式计算圆周率的大小
'''
import math


def 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:
        break

dele = List.pop()
List.insert(2,dele)
del List[1]
print(dele)
print(List)

输入输出

1qq
2qq
3qq
4qq
5qq
^Z
5qq
['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))

输入输出

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

22, 列表输出问题1√

"""一些物品,不知道有多少个,3个3个数的话,还多出2个;5个5个数则多出3个;
7个7个数也会多出2个。输入一个正整数,从小到大依次输出所有不超过输入数字
且满足条件的物品数量,有多个答案时每行输出一个。
例如输入:200
输出:
23
128
"""
n = int(input())
L = []
##############Begin#####################
Sum = 0
for 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])
输入输出1
100
23

输入输出2
200
23
128

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 56
34
[56, 77, 8, 8, 4, 33, 2, 2, 2, 3, 4, 56]

24, 列表去重√

#coding=utf-8
menu = 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:
        break
length = len(menu)
print(menu[-3:])
print(menu[0:length:3])

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

fish
pork
wolf
wife
wifi
chicken
^Z
['wife', 'wifi', 'chicken']
['fish', 'wife']
或者
1
2
3
4
5
6
7
^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]按二维列表第二个元素

以上是关于Python头歌答案入门基础代码60例的主要内容,如果未能解决你的问题,请参考以下文章

头歌实验二Python入门之基础语法

湖南大学python头歌实训-分支语句

educoder(头歌)平台Java实训作业答案

头歌实践教学平台答案(Python实训答案之循环结构)

头歌实验三Python顺序结构程序设计

头歌实验三Python顺序结构程序设计