请问这个Python代码中的第5,7,9行如何理解?谢谢!

作者&投稿:轩进 (若有异议请与网页底部的电邮联系)
请问以下如图所示的Python代码如何理解?谢谢!~


这样应该很清楚了吧

递归方法有些时候是不太好理解,不过递归的意义就是把解决问题n变成解决n-1的问题,最终变成解决1个问题。
假设有n个盘子,从上到下依次编号,最下面的盘子编号是大写的N。托盘分别是x,y,z。要把所有盘子从x移动到z。
前面几行代码就不解释了,很容易理解。
第五行,如果只有一个盘子,就直接从x移动到z。
第七行,如果不只一个盘子,先把上面n-1个盘子从x移动到y。
第八行,再把N号盘子从x移动到z。
第九行,再把刚才那n-1个盘子从y移动到z。

至于那n-1个盘子是怎么移动的,再次调用这个函数,把问题变成n-2个盘子加1个盘子的问题。

d={}是初始化一个空的字典变量。

t是输入的名称组成的列表。for c in range(len(t)):就是遍历t列表的下标。

t[c]就是t列表中每一项,d[t[c]]=d.get(t[c],0)+1就是以t[c]作为键,d.get(t[c],0)+1作为值保存到字典中。其中d.get(t[c],0),get意思是取键值为t[c]的值,如果不存在就返回0。

所以d[t[c]]=d.get(t[c],0)+1的意思简单说:就是字典中如果存在键值t[c],则将其值+1,否则新建一个键t[c],值为1。

ls = list(d.items())意思是将字典d转换成一个由元祖组成的列表形式

ls.sort(key=lambda x:x[1], reverse=True) 这里是对上面的列表排序,由于列表包含元祖,所以key=lambda x:x[1]就是特指按列表每一项元祖的第二个元素进行排列。 reverse=True表示排序规则是逆序。

所以ls.sort(key=lambda x:x[1], reverse=True)的意思就是,将字典转换成的列表,按照字典值进行逆序排序。

for k in range(len(ls)):
zy,num=ls[k]这里就是遍历ls每项元祖,并将元祖第一个元祖赋值给zy,第二项赋值给num。

print("{}:{}".format(zy,num))如果是写在循环内,那zy,num=ls[k]这里的意思就是是将字典中键值对分别保存到遍历zy和num中,并打印。



第5行:
比如你输入的是:A B A C
t=names.split() => t=["A","B","A","C"]
t[c] = t[0] => "A"
d.get("A",0) => 如果找到字典d里的A键,就返回它值,没找到返回0
d[t[c]]=d.get(t[c],0)+1
=>循环到第一个A是d["A"] = 0+1
=>循环到第二个A是d["A"] = 1+1 ,达到计数累计的效果
第7行
ls.sort(key=lambda x:x[1], reverse=True)
按字典的值进行排序
第9行
zy,num=ls[k]
序列解包
相当于
zy = ls[k][0]
num== ls[k][1]

第五行 d是个字典,对行业(c)这个序列遍历,get函数是取得字典的键值,若没有此键则返回默认值,这里的默认值是0,所以这句话的意思是,遍历c统计元素的个数,并保持到字典中。
第七行 第六行ls的结果是一个元组的序列,sort函数按照元组的第2个元素排序,reverse=True是降序,所以意思是按照各行业的统计个数排序
第九行 将排完序的元组的序列一一赋值给zy,num 并打印,就是按照排列顺序以此打印职业,和职业出现的次数


问一个python编程题,while循环买票
注意:最左边每个=表示一个空格 while True:===age = input('你的年龄是: ')===if age == 'quit':===print('结束程序')===break ===else:===try:===age=int(age)===if age<3:===print('你可以免费入场')===elif 3<=age<=12:===print('票价十块钱')===else:===prin...

请教一个python问题:from XXX import XXX
from lxml import etree 是 from Module import Function或Class等 这个只是从模块中导入一个或几个函数或类的做法。另外一个常见的是 import Module 你这里就是:import lxml 是把整个模块中得东西,包括上面那单个etree都导入->所以你后面的程序就都可以使用了。更多解释,可参考:【教程】Python中的...

python一问一答代码怎么写
python一问一答代码步骤:1、对问答库进行拆分,将文本分别拆分为问题库和答案库。2、将问题进行文本处理:循环遍历问题库里每一个问题。对每一个问题进行文本处理:首先加载停用词库,对问题用nltk分词进行小写化、去停用词、数值归一后重新加入到一个问题库,对这个已经处理完的问题库用zipf定律进行词频...

python问一段代码?
你好,这个x是遍历path下面文件或者文件夹的名字。然后path+x就相当于给这个文件或者文件夹加上目录的信息。后面那个isdir是判断这个是不是文件夹。

python面试必备题目有哪些
3、如何在Python中管理内存?Python中的内存管理由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆中。程序员无权访问此私有堆。Python解释器负责处理这个问题。Python对象的堆空间分配由Python的内存管理器完成。核心API提供了一些程序员编写代码的工具Python还有一个内置的垃圾收集器,它可以回收...

python新手求解python2和python3的问题
二、使用 2to3 工具对代码进行检查和转换 2to3是python自带的一个代码转换工具,可以将python2的代码自动转换为python3的代码。当然,不幸的是转换出的代码并没有对python2的兼容做任何的处理。所以我们并不真正使用2to3转换出的代码。执行2to3.py 查看输出信息,并修正相关问题。为了简化这个转换过程...

Python问题:SyntaxError: Non-ASCII character '\\xe2' in file_百度知...
在python中出现该问题是因为文件格式编码出现了问题,具体原因和解决方法如下:原因分析“SyntaxError: Non-ASCII character '\\xe2' in file”翻译为中文的意思是:在文件中存在着非法的ASCII字符 2.ASCII是8位即为一个字符,一共有256个字符,随着计算机的快速发展,现在已经发展到使用2个或者4个字符 3...

Python 问题
from functools import reducea = '123456'def add(x, y): return int(x) + int(y)sum = reduce(add, a)print(sum)四位数是int型的话,用str()方法转化成字符串。

求问这个要怎么用python编写
import random, dropdata def test_drop(drop_id,drop_num):list1 = []box = [i['itemid'] for i in dropdata.data[drop_id]]weight = [i['weight'] for i in dropdata.data[drop_id]]for i in range(drop_num):r = random.randint(1, sum(weight))if r <= weight[0]:list...

Python 问题怎么解决?
从那时起,Python语言中的字符串就分为两种:一种是2.0版之前就已经使用很久的传统Python字符串,一种则是新的Unicode字符串。在Python语言中,一般的解决办法是使用unicode()内建函数对一个传统Python字符串进行“解码”,得到一个Unicode字符串,然后又通过Unicode字符串的encode()方法对这个Unicode字符...

吉隆县13998512207: 在Python编程中,字符串'5'的二进制表示为什么是1001101 -
磨季银治: 从字符串中依次读16个字符出来,用函数int('0010101000101010',2)把这个字符串转成整数,然后用chr转成字符chr(int('0010101000101010',2)),就可以写入文件中了,不过还有一个问题就是不够16位你要如何处理的,可以在文件开始先存一个数字,就是记录01这个串的总长度

吉隆县13998512207: 如何运行Python文件 -
磨季银治: 1. 使用Python自带的IDLE 在开始-->程序-->Python2.5(视你安装的版本而不同)中找到IDLE(Python GUI), 2. 点击后弹出如下窗体:3. 在>>>提示符后输入代码,回车,就可以执行此代码.4. IDLE支持语法高亮,支持自动缩进,支持方法提...

吉隆县13998512207: python代码出现OSError:[WinError 123] 文件名、目录名或卷标语法不正确.怎么解决?谢谢da'shen -
磨季银治: 1、先下载并解压程序打开后,选中需要恢复的盘,然后点《开始恢复》按钮. 2、软件找出文件后,会放到与要恢复盘卷标名相同的目录中. 3、扫描完成后文件夹名变《目录+数字》,没关系这是最外层的根目录被破坏导致的,里面的文件名都是正常的.将需要恢复的数据打钩,然后点右上角的保存,《另存为》按钮,将打钩的文件复制出来. 4、最后一步只需等待程序将数据复制完成就可以了 .

吉隆县13998512207: python代码 -
磨季银治: #! usr/bin/env python # -*- coding: utf-8 -*-import sysdef dispaly(ch) :for i in xrange(0,len(ch)-1) :if ch[i] == chr(127) :print chr(ord(ch[i])-1),'none'elif ch[i] == chr(0) :print 'none',chr(ord(ch[i])+1)else :print chr(ord(ch[i])-1),chr(ord(ch[i])+1)if __...

吉隆县13998512207: arr[1,2,3,4,5] 请问 arr[2:4] 是多少? 请用python语言 -
磨季银治: 这个简单 arr[2:4]中的[]为切片操作,就是说index从2开始,包括2,然后到4结束,不包括4. 那么,arr[2:4]就是指从arr的第2个元素开始(这里的2其实是第三个了,因为从0开始计数),直到第4个元素,组成的列表.就是[3,4,5].

吉隆县13998512207: python中“<>”代表什么意思? -
磨季银治: 1. “”代表不等号,就是不等于的意思;2. 在代码中:a是一个数组,i是一个变量用来指示数组的元素下标;如果i不等于index0 并且 不等于index1;那么将a的第i个元素,添加到数组tr中.3. “”和 != 是等价的;4. 在3.0及以上版本中已经不能用.

吉隆县13998512207: 请问下面这段python代码中,第六行的[val]为什么要加方括号? -
磨季银治: 因为inverse是一个字典,val是键,所以需要加方括号

吉隆县13998512207: Python 2.5.4,一段FuzzBuzz代码中s= 是什么意思 -
磨季银治: 第一个if在1-100中找出了所有能被3或者5整除的数 然后后面两个if一个是找到能被3整除的,然后s=''+'Fizz'就是string的运算,你前面的课学过了 这样s就变成了Fizz(一个空的string:''和另外一个string:Fizz相加) 另外一个if 就是判断能否被5整除,然后给通过同样方法,让s编程Buzz 然后,print s 不知道我说的明白不明白!

吉隆县13998512207: python语言中: >>8.75%.5 >>0.25 请问是什么啊 -
磨季银治: 8.75对0.5取模 0.5 * 17 + 0.25 = 8.75 0.25就是这个模

吉隆县13998512207: VScode下Python无法F5代码 -
磨季银治: 运行python代码的常见方式有三种: 运行python命令,进入python工作环境,输入表达式后回车即可 创建保护python代码的文件,使用命令 python filename [参数]执行 在Linux下首行注释#!/usr/bin/env python3,然后将源文件加上执行属性即可...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网