如何实现换行显示def getActors(filename): actors = dict() # 打开xlsx文件,并获取第一个worksheet wb = openpyxl.load_workbook((filename)) ws = wb.worksheets[0] # 遍历Excel文件中的所有文件中的所有行 for index, row in enumerate(ws.rows): # 跳过第一行的表头 if index == 0: continue # 获取电影名称和演员列表 fileName, actor = row[0].value, row[1].value.split('/') # 遍历该电影所有演员,统计参演电影 for a in actor: actors[a] = actors.get(a, set()) actors[a].add(fileName) return actors data = getActors('实践2素材.xlsx') print(data)

时间: 2024-02-14 07:17:15 浏览: 21
您可以在每个 print 语句后面添加换行符 "\n" 来实现换行输出。例如,您可以这样写: ``` def getActors(filename): actors = dict() # 打开xlsx文件,并获取第一个worksheet wb = openpyxl.load_workbook((filename)) ws = wb.worksheets[0] # 遍历Excel文件中的所有文件中的所有行 for index, row in enumerate(ws.rows): # 跳过第一行的表头 if index == 0: continue # 获取电影名称和演员列表 fileName, actor = row[0].value, row[1].value.split('/') # 遍历该电影所有演员,统计参演电影 for a in actor: actors[a] = actors.get(a, set()) actors[a].add(fileName) return actors data = getActors('实践2素材.xlsx') print(data, "\n") ``` 这样每次执行完 `print(data)` 后,会自动换行,使得下一行的输出与上一行的输出分开来,更加清晰易读。
相关问题

在cloudcompare的mainwindow.cpp中,用C++定义一个函数void MainWindow::DBH(),基于最小二乘法,通过获取当前选中的实体作为点云文件来源,实现对txt格式的树木点云文件的胸径计算

可以参考以下代码实现: ```cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <iostream> #include <fstream> #include <string> #include <vector> #include <cmath> #include <QFileDialog> #include <QMessageBox> #include <pcl/point_types.h> #include <pcl/io/pcd_io.h> #include <pcl/visualization/pcl_visualizer.h> typedef pcl::PointXYZ PointT; typedef pcl::PointCloud<PointT> PointCloudT; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); //连接信号与槽函数 connect(ui->actionOpen, SIGNAL(triggered(bool)), this, SLOT(openFile())); connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(DBH())); } MainWindow::~MainWindow() { delete ui; } void MainWindow::openFile() { QString fileName = QFileDialog::getOpenFileName(this, tr("Open Point Cloud"), "", tr("Point Cloud Files (*.pcd *.txt)")); if(!fileName.isEmpty()) { //清空界面 ui->qvtkWidget->update(); ui->textBrowser->clear(); //读取点云文件 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); if (pcl::io::loadPCDFile<pcl::PointXYZ>(fileName.toStdString(), *cloud) == -1) { //尝试读取txt格式文件 std::ifstream ifs(fileName.toStdString()); if (!ifs.is_open()) { QMessageBox::critical(this, "Error", "Cannot open file!"); return; } std::string line; while (std::getline(ifs, line)) { pcl::PointXYZ p; std::stringstream ss(line); ss >> p.x >> p.y >> p.z; cloud->push_back(p); } ifs.close(); } //显示点云 pcl::visualization::PCLVisualizer vis("Point Cloud"); vis.setBackgroundColor(0.0, 0.0, 0.0); vis.addPointCloud(cloud, "cloud"); vis.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud"); ui->qvtkWidget->update(); //输出点云信息 std::stringstream ss; ss << "Number of points: " << cloud->size() << std::endl; ui->textBrowser->append(ss.str().c_str()); //保存点云 cloud_ = cloud; } } void MainWindow::DBH() { if (!cloud_) { QMessageBox::warning(this, "Warning", "No point cloud selected!"); return; } //获取选中的点 std::vector<int> indices; if (ui->qvtkWidget->getRenderWindow()->GetRenderers()->GetFirstRenderer()->GetViewProp("cloud")) { vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New(); actor = ui->qvtkWidget->getRenderWindow()->GetRenderers()->GetFirstRenderer()->GetActors()->GetLastActor(); vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper()); vtkSmartPointer<vtkDataSet> dataSet = vtkSmartPointer<vtkDataSet>::New(); dataSet = mapper->GetInput(); vtkSmartPointer<vtkUnsignedCharArray> pointColors = vtkSmartPointer<vtkUnsignedCharArray>::New(); pointColors = vtkUnsignedCharArray::SafeDownCast(dataSet->GetPointData()->GetScalars()); for (vtkIdType i = 0; i < pointColors->GetNumberOfTuples(); i++) { if (pointColors->GetValue(i) == 255) { indices.push_back(i); } } } if (indices.empty()) { QMessageBox::warning(this, "Warning", "No point selected!"); return; } //计算胸径 double sum_x = 0.0, sum_y = 0.0, sum_z = 0.0, sum_xy = 0.0, sum_xz = 0.0, sum_xx = 0.0; for (int i : indices) { sum_x += cloud_->points[i].x; sum_y += cloud_->points[i].y; sum_z += cloud_->points[i].z; sum_xx += cloud_->points[i].x * cloud_->points[i].x; sum_xy += cloud_->points[i].x * cloud_->points[i].y; sum_xz += cloud_->points[i].x * cloud_->points[i].z; } double n = static_cast<double>(indices.size()); double a = (n * sum_xy - sum_x * sum_y) / (n * sum_xx - sum_x * sum_x); double b = (sum_y - a * sum_x) / n; double c = (n * sum_xz - sum_x * sum_z) / (n * sum_xx - sum_x * sum_x); double d = (sum_z - c * sum_x) / n; double D = 2.0 * sqrt(a * a + 1) * 1000.0; //单位:毫米 //输出胸径 std::stringstream ss; ss << "DBH: " << D << " mm" << std::endl; ui->textBrowser->append(ss.str().c_str()); } ``` 该函数基于最小二乘法,通过获取当前选中的实体作为点云文件来源,实现对txt格式的树木点云文件的胸径计算。

android ListView写一个电影列表

以下是一个简单的电影列表示例,其中包含电影名称、导演和演员列表: 1. 创建一个新的Android项目,然后在布局文件中添加一个ListView组件: ``` <ListView android:id="@+id/movie_list" android:layout_width="match_parent" android:layout_height="match_parent"/> ``` 2. 在Activity中获取ListView组件的引用,并创建一个Movie类作为数据模型: ``` public class Movie { private String title; private String director; private List<String> actors; public Movie(String title, String director, List<String> actors) { this.title = title; this.director = director; this.actors = actors; } public String getTitle() { return title; } public String getDirector() { return director; } public List<String> getActors() { return actors; } } public class MainActivity extends AppCompatActivity { private ListView movieList; private List<Movie> movies; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); movieList = findViewById(R.id.movie_list); movies = new ArrayList<>(); movies.add(new Movie("The Shawshank Redemption", "Frank Darabont", Arrays.asList("Tim Robbins", "Morgan Freeman"))); movies.add(new Movie("The Godfather", "Francis Ford Coppola", Arrays.asList("Marlon Brando", "Al Pacino", "James Caan"))); movies.add(new Movie("The Dark Knight", "Christopher Nolan", Arrays.asList("Christian Bale", "Heath Ledger", "Aaron Eckhart"))); MovieAdapter adapter = new MovieAdapter(this, movies); movieList.setAdapter(adapter); } } ``` 3. 创建一个自定义适配器MovieAdapter,用于将Movie对象显示在ListView中: ``` public class MovieAdapter extends ArrayAdapter<Movie> { private Context context; private List<Movie> movies; public MovieAdapter(Context context, List<Movie> movies) { super(context, R.layout.movie_item, movies); this.context = context; this.movies = movies; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = LayoutInflater.from(context); convertView = inflater.inflate(R.layout.movie_item, parent, false); } TextView titleView = convertView.findViewById(R.id.title); TextView directorView = convertView.findViewById(R.id.director); TextView actorsView = convertView.findViewById(R.id.actors); Movie movie = movies.get(position); titleView.setText(movie.getTitle()); directorView.setText("Director: " + movie.getDirector()); actorsView.setText("Actors: " + TextUtils.join(", ", movie.getActors())); return convertView; } } ``` 4. 创建一个布局文件movie_item.xml,用于定义ListView中每个电影项的布局: ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp"> <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="18sp" android:textStyle="bold"/> <TextView android:id="@+id/director" android:layout_width="match_parent" android:layout_height="wrap_content"/> <TextView android:id="@+id/actors" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> ``` 5. 运行应用程序,您应该会看到一个电影列表,其中包含上面定义的电影。 这只是一个简单的示例,您可以根据需要更改布局和数据模型来创建更复杂的电影列表。

相关推荐

zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

最新推荐

recommend-type

406_智能小区管家服务系统的设计与实现-源码.zip

提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
recommend-type

毕业设计+项目编程实战+基于BS架构的ASP.NET的新闻管理系统(含程序源代码+毕业设计文档)

前言……………………………………………………………………………….2 第1章 ASP简介…………………………………………………………….…..1 1.1ASP的特点………………………………………………………….1 1.2ASP的优势………………………………………………………….2 1.3 ASP与HTML……………………………………………………….3 1.4 ASP的内置对象……………………………………………………..4 1.4.1 Request对象………………………………………………….4 1.4.2 Response对象………………………………………………..4 第2章 为什么要开发一个新闻发布系统…………………………………………….6 第3章 Access数据库……………………………………………………………8 3.1 数据库概念………………………………………………………….8 3.2 Access数据库特点………………………………………………….8 3.3
recommend-type

prompt_toolkit-3.0.27.tar.gz

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

庆祝传统节日,端午安康

端午节,又称为端阳节、龙舟节,是中国传统节日之一,始于战国时期,至今已有上千年的历史。每年农历五月初五这一天,人们都会举行各种庆祝活动,以祈求平安健康、驱邪避灾。
recommend-type

266_基于微信小程序的在线诗歌赏析系统的设计与实现-源码.zip

提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

hive中 的Metastore

Hive中的Metastore是一个关键的组件,它用于存储和管理Hive中的元数据。这些元数据包括表名、列名、表的数据类型、分区信息、表的存储位置等信息。Hive的查询和分析都需要Metastore来管理和访问这些元数据。 Metastore可以使用不同的后端存储来存储元数据,例如MySQL、PostgreSQL、Oracle等关系型数据库,或者Hadoop分布式文件系统中的HDFS。Metastore还提供了API,使得开发人员可以通过编程方式访问元数据。 Metastore的另一个重要功能是跟踪表的版本和历史。当用户对表进行更改时,Metastore会记录这些更改,并且可以让用户回滚到
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。