Processing 练习(7)- 抽象空间_欣赏_000

本文介绍了一个利用创意编程技术实现的动态圆形艺术作品,通过在平面上绘制一系列移动并相互交互的圆形,展示了一种独特的视觉效果。程序通过随机分配圆的位置、大小和移动速度,同时在圆形相交时绘制连接线,根据圆形的奇偶性改变线条颜色,增加了作品的趣味性和互动性。此外,用户可以通过键盘操作调整圆形的大小,为作品增添了动态变化的元素。

从openProcessing.org上面拷来的一个抽象平面图


代码:

/* Based on CREATIVE CODING course,  MONASH UNIVERSITY
 
 MOVE CIRCLES IN A STRIGHT LINE AND CONSTRAIN TO SURFACE.
 IF TWO CIRCLES INTERSECT DRAW A LINE CONNECTING THEIR CENTERS,
 CLOURING THE LINE BASED ON THE CIRCLE BEING ODD OR EVEN
 
 ARROW UP = INCREASE RADIUS OF CIRCLE
 ARROW DOWN = DECREASE RADIUS OF CIRCLE */
 
 
int n = 50; // NUMBER OF CIRCLES
float[] x = new float[n];
float[] y = new float[n];
float[] d = new float[n]; // RADIUS OF THE CIRCLES
float[] moveX = new float[n];
float[] moveY = new float[n];
 
void setup() {
  size(800, 500);
  background(255);
  stroke(0, 10);
  noFill();
  smooth();
  for (int i = 0; i<n; i++) { //ASSIGN VALUES TO VARIABLES
    x[i]=random(width);
    y[i]=random(height);
    d[i]=random(20, 80);
    // CALL FUNCTIONS
    moveX[i]=random(-1, 1);
    moveY[i]=random(-1, 1);
  }
  println(d); //SHOW RADIUS
}
 
void draw() {
  for (int i = 0; i<n; i++) {
    moveCircle(i);
    connectCircle(i);
  }
}
 
//#######  FUNTIONS  ###############
 
// MOVE CIRCLES IN A STRIGHT LINE AND CONSTRAIN TO SURFACE
void moveCircle(int i) {
  x[i]=x[i]+moveX[i];
  y[i]=y[i]+moveY[i];
  //  ellipse(x[i], y[i], d[i], d[i]);
 
  if (x[i]>width || x[i]<0) {
    moveX[i]= moveX[i]>0 ? -random(-1, 1) : random(-1, 1);
  }
  if (y[i]>height || y[i]<0) {
    moveY[i] = moveY[i]>0 ? -random(-1, 1) : random(-1, 1);
  }
}
 
// IF TWO CIRCLES INTERSECT THEN DRAW A LINE CONNECTING THEIR CENTERS,
//CLOURING THE LINE BASED ON THE CIRCLE BEING ODD OR EVEN
void connectCircle(int i) {
  for (int j = 0; j<n; j++) {
    if (j!=i) {
      if (dist(x[i], y[i], x[j], y[j])<(d[i]+d[j])) {
        if (i%2==0) {
          stroke(255, 10);
        } else {
          stroke(0, 10);
        }
        line(x[i], y[i], x[j], y[j]);
      }
    }
  }
}
 
// MODIFY RADIUS OF CIRCLES, SAVE AND REFRESH
void keyPressed() {
  if (keyCode == UP) {
    for (int i = 0; i <n; i++) {
      d[i]++;
    }
    println(d);
  }
  if (keyCode == DOWN) {
    for (int i = 0; i <n; i++) {
      d[i]--;
    }
    println(d);
  }
 
  if (key == 'r') {
    background(255);
  }
 
  if (key == 's') {
    saveFrame("######.png");
  }
}


1a-icho_uk_2010_1a.json: bad operand type for abs(): 'str' Error processing 2010-2a-icho_uk_2010_2a.json: bad operand type for abs(): 'str' Error processing 2010-3a-icho_uk_2010_3a.json: bad operand type for abs(): 'str' Error processing 2010-3c1_0-icho_uk_2010_3c1.json: bad operand type for abs(): 'str' Error processing 2010-3c1_1-icho_uk_2010_3c1.json: bad operand type for abs(): 'str' Error processing 2010-4c1-icho_uk_2010_4c1.json: bad operand type for abs(): 'str' Error processing 2010-4d1-icho_uk_2010_4d1.json: bad operand type for abs(): 'str' Error processing 2010-5a_0-icho_uk_2010_5a.json: bad operand type for abs(): 'str' Error processing 2010-5a_1-icho_uk_2010_5a.json: bad operand type for abs(): 'str' Error processing 2010-5a_2-icho_uk_2010_5a.json: bad operand type for abs(): 'str' Error processing 2010-6a-icho_uk_2010_6a.json: bad operand type for abs(): 'str' Error processing 2010-6b-icho_uk_2010_6b.json: bad operand type for abs(): 'str' Error processing 2010-6d-icho_uk_2010_6d.json: bad operand type for abs(): 'str' Error processing 2010-6e-icho_uk_2010_6e.json: bad operand type for abs(): 'str' Error processing 2010-6f-icho_uk_2010_6f.json: bad operand type for abs(): 'str' Error processing 2011-1a-icho_uk_2011_1a.json: bad operand type for abs(): 'str' Error processing 2011-1b_0-icho_uk_2011_1b.json: bad operand type for abs(): 'str' Error processing 2011-1b_1-icho_uk_2011_1b.json: bad operand type for abs(): 'str' Error processing 2011-1c-icho_uk_2011_1c.json: bad operand type for abs(): 'str' Error processing 2011-1e-icho_uk_2011_1e.json: bad operand type for abs(): 'str' Error processing 2011-2c-icho_uk_2011_2c.json: bad operand type for abs(): 'str' Error processing 2011-2d-icho_uk_2011_2d.json: bad operand type for abs(): 'str' Error processing 2011-2e-icho_uk_2011_2e.json: bad operand type for abs(): 'str' Error processing 2011-2f-icho_uk_2011_2f.json: bad operand type for abs(): 'str' Error processing 2011-3d-icho_uk_2011_3d.json: bad operand type for abs(): 'str' Error processing 2011-3e-icho_uk_2011_3e.json: bad operand type for abs(): 'str' Error processing 2011-5a-icho_uk_2011_5a.json: bad operand type for abs(): 'str' Error processing 2019-1a-icho_uk_2019_1a.json: bad operand type for abs(): 'str' Error processing 2019-1b1-icho_uk_2019_1b1.json: bad operand type for abs(): 'str' Error processing 2019-1b2-icho_uk_2019_1b2.json: bad operand type for abs(): 'str' Error processing 2019-1b3-icho_uk_2019_1b3.json: bad operand type for abs(): 'str' Error processing 2019-1d_0-icho_uk_2019_1d.json: bad operand type for abs(): 'str' Error processing 2019-1d_1-icho_uk_2019_1d.json: bad operand type for abs(): 'str' Error processing 2019-1d_2-icho_uk_2019_1d.json: bad operand type for abs(): 'str' Error processing 2019-1d_3-icho_uk_2019_1d.json: bad operand type for abs(): 'str' Error processing 2019-2a_0-icho_uk_2019_2a.json: bad operand type for abs(): 'str' Error processing 2019-2a_1-icho_uk_2019_2a.json: bad operand type for abs(): 'str' Error processing 2019-2a_2-icho_uk_2019_2a.json: bad operand type for abs(): 'str' Error processing 2019-2b_0-icho_uk_2019_2b.json: bad operand type for abs(): 'str' Error processing 2019-2b_1-icho_uk_2019_2b.json: bad operand type for abs(): 'str' Error processing 2019-2d-icho_uk_2019_2d.json: bad operand type for abs(): 'str' Error processing 2019-3a2-icho_uk_2019_3a2.json: bad operand type for abs(): 'str' Error processing 2019-4a-icho_uk_2019_4a.json: bad operand type for abs(): 'str' Error processing 2019-5d-icho_uk_2019_5d.json: bad operand type for abs(): 'str' Error processing 2019-5f-icho_uk_2019_5f.json: bad operand type for abs(): 'str' Error processing 2019-5g-icho_uk_2019_5g.json: bad operand type for abs(): 'str' Error processing 2020-1a-icho_uk_2020_1a.json: bad operand type for abs(): 'str' Error processing 2020-1b-icho_uk_2020_1b.json: bad operand type for abs(): 'str' Error processing 2020-1c-icho_uk_2020_1c.json: bad operand type for abs(): 'str' Error processing 2020-1d_0-icho_uk_2020_1d.json: bad operand type for abs(): 'str' Error processing 2020-1d_1-icho_uk_2020_1d.json: bad operand type for abs(): 'str' Error processing 2020-2a-icho_uk_2020_2a.json: bad operand type for abs(): 'str' Error processing 2020-2b-icho_uk_2020_2b.json: bad operand type for abs(): 'str' Error processing 2020-2c-icho_uk_2020_2c.json: bad operand type for abs(): 'str' Error processing 2020-2g-icho_uk_2020_2g.json: bad operand type for abs(): 'str' Error processing 2020-2h-icho_uk_2020_2h.json: bad operand type for abs(): 'str' Error processing 2020-4a-icho_uk_2020_4a.json: bad operand type for abs(): 'str' Error processing 2020-4b-icho_uk_2020_4b.json: bad operand type for abs(): 'str' Error processing 2020-4c-icho_uk_2020_4c.json: bad operand type for abs(): 'str' Error processing 2020-4e_0-icho_uk_2020_4e.json: bad operand type for abs(): 'str' Error processing 2020-4f-icho_uk_2020_4f.json: bad operand type for abs(): 'str' Error processing 2021-1b1_0-icho_uk_2021_q1b1.json: bad operand type for abs(): 'str' Error processing 2021-1b1_1-icho_uk_2021_q1b1.json: bad operand type for abs(): 'str' Error processing 2021-1b2-icho_uk_2021_q1b2.json: bad operand type for abs(): 'str' Error processing 2021-1c_0-icho_uk_2021_q1c.json: bad operand type for abs(): 'str' Error processing 2021-1c_1-icho_uk_2021_q1c.json: bad operand type for abs(): 'str' Error processing 2021-1c_2-icho_uk_2021_q1c.json: bad operand type for abs(): 'str' Error processing 2021-2c-icho_uk_2021_2c.json: bad operand type for abs(): 'str' Error processing 2021-2d-icho_uk_2021_2d.json: bad operand type for abs(): 'str' Error processing 2021-2f-icho_uk_2021_2f.json: bad operand type for abs(): 'str' Error processing 2021-3b-icho_uk_2021_3b.json: bad operand type for abs(): 'str' Error processing 2021-3g-icho_uk_2021_3g.json: bad operand type for abs(): 'str' Error processing 2021-6a-icho_uk_2021_q6a.json: bad operand type for abs(): 'str' Error processing 2021-6e-icho_uk_2021_q6e.json: bad operand type for abs(): 'str' Error processing 2022-1b-icho_uk_2022_q1b.json: bad operand type for abs(): 'str' Error processing 2022-1c-icho_uk_2022_q1c.json: bad operand type for abs(): 'str' Error processing 2022-1d-icho_uk_2022_q1d.json: bad operand type for abs(): 'str' Error processing 2022-1e_0-icho_uk_2022_q1e.json: bad operand type for abs(): 'str' Error processing 2022-1e_1-icho_uk_2022_q1e.json: bad operand type for abs(): 'str' Error processing 2022-1f-icho_uk_2022_q1f.json: bad operand type for abs(): 'str' Error processing 2022-1g-icho_uk_2022_q1g.json: bad operand type for abs(): 'str' Error processing 2022-2b-icho_uk_2022_q2b.json: bad operand type for abs(): 'str' Error processing 2022-2d_0-icho_uk_2022_q2d.json: bad operand type for abs(): 'str' Error processing 2022-2d_1-icho_uk_2022_q2d.json: bad operand type for abs(): 'str' Error processing 2022-2d_2-icho_uk_2022_q2d.json: bad operand type for abs(): 'str' Error processing 2022-3a-icho_uk_2022_q3a.json: bad operand type for abs(): 'str' Error processing 2022-3b_0-icho_uk_2022_q3b.json: bad operand type for abs(): 'str' Error processing 2022-3b_1-icho_uk_2022_q3b.json: bad operand type for abs(): 'str' Error processing 2022-3b_2-icho_uk_2022_q3b.json: bad operand type for abs(): 'str' Error processing 2022-3b_3-icho_uk_2022_q3b.json: bad operand type for abs(): 'str' Error processing 2022-3b_4-icho_uk_2022_q3b.json: bad operand type for abs(): 'str' Error processing 2022-4c-icho_uk_2022_q4c.json: bad operand type for abs(): 'str' Error processing 2022-6a_0-icho_uk_2022_q6a.json: bad operand type for abs(): 'str' Error processing 2022-6a_1-icho_uk_2022_q6a.json: bad operand type for abs(): 'str' Error processing 2022-6b-icho_uk_2022_q6b.json: bad operand type for abs(): 'str' Error processing 2023-1a-icho_uk_2023_q1a.json: bad operand type for abs(): 'str' Error processing 2023-1b-icho_uk_2023_q1b.json: bad operand type for abs(): 'str' Error processing 2023-1c1-icho_uk_2023_q1c1.json: bad operand type for abs(): 'str' Error processing 2023-1c2-icho_uk_2023_q1c2.json: bad operand type for abs(): 'str' Error processing 2023-1d1-icho_uk_2023_q1d1.json: bad operand type for abs(): 'str' Error processing 2023-1d2_0-icho_uk_2023_q1d2.json: bad operand type for abs(): 'str' Error processing 2023-1d2_1-icho_uk_2023_q1d2.json: bad operand type for abs(): 'str' Error processing 2023-1d2_2-icho_uk_2023_q1d2.json: bad operand type for abs(): 'str' Error processing 2023-1d2_3-icho_uk_2023_q1d2.json: bad operand type for abs(): 'str' Error processing 2023-1e-icho_uk_2023_q1e.json: bad operand type for abs(): 'str' Error processing 2023-2a-icho_uk_2023_q2a.json: bad operand type for abs(): 'str' Error processing 2023-2b-icho_uk_2023_q2b.json: bad operand type for abs(): 'str' Error processing 2023-2c-icho_uk_2023_q2c.json: bad operand type for abs(): 'str' Error processing 2023-2g1-icho_uk_2023_q2g1.json: bad operand type for abs(): 'str' Error processing 2023-2g2-icho_uk_2023_q2g2.json: bad operand type for abs(): 'str' Error processing 2023-2h1-icho_uk_2023_q2h1.json: bad operand type for abs(): 'str' Error processing 2023-2h2-icho_uk_2023_q2h2.json: bad operand type for abs(): 'str' Error processing 2023-2h3-icho_uk_2023_q2h3.json: bad operand type for abs(): 'str' Error processing 2023-2h5_0-icho_uk_2023_q2h5.json: bad operand type for abs(): 'str' Error processing 2023-2h5_1-icho_uk_2023_q2h5.json: bad operand type for abs(): 'str' Error processing 2023-5a2-icho_uk_2023_q5a2.json: bad operand type for abs(): 'str' Error processing 2023-5d-icho_uk_2023_q5d.json: bad operand type for abs(): 'str' Error processing 2023-5e-icho_uk_2023_q5e.json: bad operand type for abs(): 'str' Error processing 2023-5f2-icho_uk_2023_q5f2.json: bad operand type for abs(): 'str' Error processing combustion_engineering-1-OVGU-CE-march-2021-1.json: bad operand type for abs(): 'str' Error processing computational_photochemistry-photochemistry_1-photochemistry_1.json: bad operand type for abs(): 'str' Error processing computational_photochemistry-photochemistry_2-photochemistry_2.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_0-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_1-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_10-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_11-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_12-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_13-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_14-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_15-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_16-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_17-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_18-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_19-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_2-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_20-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_21-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_22-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_23-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_24-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_3-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_4-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_5-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_6-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_7-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_8-electron_counts.json: bad operand type for abs(): 'str' Error processing electron_counts-electron_counts_9-electron_counts.json: bad operand type for abs(): 'str' Error processing metal_complexes-metal_complexes_1-metal_complexes_1.json: bad operand type for abs(): 'str' Error processing metal_complexes-metal_complexes_11-metal_complexes_11.json: bad operand type for abs(): 'str' Error processing metal_complexes-metal_complexes_12-metal_complexes_12.json: bad operand type for abs(): 'str' Error processing metal_complexes-metal_complexes_2-metal_complexes_2.json: bad operand type for abs(): 'str' Error processing metal_complexes-metal_complexes_3-metal_complexes_3.json: bad operand type for abs(): 'str' Error processing metal_complexes-metal_complexes_4-metal_complexes_4.json: bad operand type for abs(): 'str' Error processing metal_complexes-metal_complexes_8-metal_complexes_8.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_0-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_1-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_10-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_11-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_12-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_13-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_14-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_15-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_16-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_17-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_18-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_19-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_2-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_20-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_21-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_22-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_23-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_3-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_4-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_5-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_6-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_7-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_8-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_isomers-number_of_isomers_9-number_of_structural_isomers.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_100-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_104-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_127-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_137-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_146-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_155-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_16-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_161-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_163-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_164-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_17-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_173-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_174-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_19-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_193-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_230-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_245-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_250-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_258-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_259-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_276-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_302-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_303-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_304-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_312-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_317-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_326-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_338-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_342-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_353-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_360-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_361-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_378-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_405-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_413-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_415-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_430-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_441-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_459-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_472-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_482-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_488-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_500-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_508-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_56-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_6-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_61-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_65-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_80-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing number_of_nmr_peaks-number_nmr_peaks_85-number_1h_nmr_shifts.json: bad operand type for abs(): 'str' Error processing oxidation_states-simple_oxidation_states_118-oxidation_states.json: bad operand type for abs(): 'str' Error processing oxidation_states-simple_oxidation_states_120-oxidation_states.json: bad operand type for abs(): 'str' Error processing oxidation_states-simple_oxidation_states_15-oxidation_states.json: bad operand type for abs(): 'str' Error processing oxidation_states-simple_oxidation_states_29-oxidation_states.json: bad operand type for abs(): 'str' Error processing oxidation_states-simple_oxidation_states_47-oxidation_states.json: bad operand type for abs(): 'str' Error processing oxidation_states-simple_oxidation_states_73-oxidation_states.json: bad operand type for abs(): 'str' Error processing oxidation_states-simple_oxidation_states_74-oxidation_states.json: bad operand type for abs(): 'str' Error processing oxidation_states-simple_oxidation_states_85-oxidation_states.json: bad operand type for abs(): 'str' Error processing oxidation_states-simple_oxidation_states_9-oxidation_states.json: bad operand type for abs(): 'str' Error processing oxidation_states-simple_oxidation_states_97-oxidation_states.json: bad operand type for abs(): 'str' Error processing periodic_table_properties-16-periodic_table_questions_16.json: bad operand type for abs(): 'str' Error processing periodic_table_properties-20-periodic_table_questions_20.json: bad operand type for abs(): 'str' Error processing polymer_chemistry_fsu-12-polymer_chemistry_12.json: bad operand type for abs(): 'str' Error processing polymer_chemistry_fsu-13-polymer_chemistry_13.json: bad operand type for abs(): 'str' Error processing polymer_chemistry_fsu-15-polymer_chemistry_15.json: bad operand type for abs(): 'str' Error processing reasoning-IV-reasoning_question_4.json: bad operand type for abs(): 'str'
最新发布
09-02
# 错误分析 错误信息:`bad operand type for abs(): 'str'` 表示你试图对一个字符串类型(`str`)使用 `abs()` 函数。 --- # 问题定位 你程序中出现了如下语句: ```python threshold = abs(target) * 0.01 ``` 其中 `target` 是从 `"targets_"` 字段中获取的: ```python target = item.get("targets_") ``` 这个字段在某些文件中是字符串(`str`)类型,而不是数字(如 `int` 或 `float`)类型,导致 `abs(target)` 抛出异常。 --- # 解决方案 你需要在使用 `abs()` 之前,**确保 `target` 是数字类型**。可以使用 `isinstance()` 进行检查。 --- ## ✅ 修改后的代码片段 ```python def is_correct_numeric(item): """判断数值型问题是否回答正确""" mae = None score = item.get("score", {}) if isinstance(score, dict): mae = score.get("mae") target = item.get("targets_") # 检查target是否为数字类型 if not isinstance(target, (int, float)): print(f"Warning: target is not a number, got {repr(target)}") return False if mae is None or target is None: return False threshold = abs(target) * 0.01 # 1% of target return mae <= threshold ``` --- ## 🔍 附加调试建议 你可以在程序最开始添加一个检查函数,帮助你找出哪些文件的 `targets_` 字段是字符串类型: ```python def check_target_type(folder_path): for filename in os.listdir(folder_path): if not filename.endswith('.json'): continue file_path = os.path.join(folder_path, filename) try: with open(file_path, 'r', encoding='utf-8') as f: data = json.load(f) if isinstance(data, list) and len(data) > 0: data = data[0] target = data.get("targets_") if not isinstance(target, (int, float)): print(f"[Bad Target] File: {filename}, target = {repr(target)}") except Exception as e: print(f"Error reading {filename}: {e}") ``` 运行该函数后,你会清楚地看到哪些文件的 `targets_` 是字符串类型,从而决定如何处理这些异常数据(如转换为浮点数或跳过)。 --- # ✅ 总结 - **错误原因:** `"targets_"` 字段是字符串(`str`)类型,而非数字(`int` / `float`); - **解决方案:** 使用 `isinstance(target, (int, float))` 做类型检查; - **调试建议:** 添加函数检查所有文件中 `targets_` 字段的数据类型。 --- # 知识点(列出该代码中遇到的知识点) **1. 类型检查与转换** 使用 `isinstance(target, (int, float))` 确保数值操作前为正确类型。 **2. 异常处理与日志输出** 捕获错误并输出文件名与错误值,便于调试与数据清洗。 **3. 数值比较安全机制** 在使用 `abs()` 和数学运算前进行类型判断,防止程序崩溃。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值