Eine praktische Übung¶
Das folgende entspricht der „Hausaufgabe 10: Abschlussübung Grundlagenteil“ auf replit.com
Ein Verzeichnis enthält einen Satz durchnummerierte Textdateien. Der Inhalt dieser Dateien hat jeweils die gleiche Form: jede Zeile enthält zwei Zahlen, eine Wellenzahl und einen zugehörigen Absorptionswert. Die Wellenzahlen sind in allen Dateien dieselben, und die Dateien haben die gleiche Zeilenanzahl. (Verwenden Sie diesen Beispieldatensatz mit zehn Dateien.)
3998.76332 0.00110 3927.95115 0.00085 3857.13898 0.00061 3786.32681 0.00048 3715.51464 -0.00012 3644.70247 -0.00397 3573.89029 -0.00014 3503.07812 0.00115 3432.26595 -0.00556 3361.45378 -0.02024 3290.64161 -0.01333 3219.82944 -0.02691 3149.01727 -0.02251 3078.20509 0.00843 3007.39292 0.02401 2936.58075 0.05253 2865.76858 0.03304 2794.95641 0.01666 2724.14424 0.01121 2653.33207 0.00891 2582.51989 0.00670 2511.70772 0.00500 2440.89555 0.00348 2370.08338 0.00269 2299.27121 0.00231 2228.45904 0.00202 2157.64686 0.00155 2086.83469 0.00129 2016.02252 0.00082 1945.21035 0.00070 1874.39818 0.00059 1803.58601 0.00015 1732.77384 0.00104 1661.96166 0.11621 1591.14949 0.08015 1520.33732 0.14534 1449.52515 0.07174 1378.71298 0.06616 1307.90081 0.07216 1237.08864 0.06333 1166.27646 0.05060 1095.46429 0.04957 1024.65212 0.03576 953.83995 0.02671 883.02778 0.02759 812.21561 0.03687
Schreiben Sie ein Skript, das nun die Absorptionswerte für jede Wellenzahl in eine Datei
data.out
zusammenfasst. Bonus: Übernehmen sie einmal die Wellenzahlen ebenfalls in die Ausgabedatei, jeweils am Anfang jeder Zeile.Beispielausgabe:
3998.76332 0.00110 0.00098 0.00114 0.00131 0.00131 0.00165 0.00166 0.00153 0.00178 0.00171 0.00174 3998.05520 0.00108 0.00093 0.00123 0.00140 0.00127 0.00157 0.00162 0.00151 0.00166 0.00166 0.00182 3997.34708 0.00104 0.00095 0.00133 0.00143 0.00128 0.00150 0.00160 0.00156 0.00155 0.00161 0.00187 3996.63896 0.00097 0.00101 0.00135 0.00139 0.00137 0.00148 0.00161 0.00161 0.00154 0.00161 0.00188 3995.93084 0.00090 0.00105 0.00130 0.00132 0.00146 0.00149 0.00159 0.00162 0.00160 0.00164 0.00186 3995.22271 0.00088 0.00108 0.00125 0.00128 0.00151 0.00149 0.00155 0.00162 0.00167 0.00169 0.00184 3994.51459 0.00091 0.00113 0.00123 0.00127 0.00150 0.00148 0.00153 0.00162 0.00170 0.00177 0.00183 3993.80647 0.00094 0.00117 0.00124 0.00128 0.00149 0.00147 0.00153 0.00162 0.00169 0.00184 0.00181 3993.09835 0.00090 0.00117 0.00120 0.00125 0.00148 0.00148 0.00151 0.00158 0.00165 0.00186 0.00176 . . . . usw.
Zusätzlich soll die Datei
header.out
einen Tabellenkopf mit den fortlaufenden Dateinummern enthalten. Im Beispiel sieht das so aus:0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010
Bonus: Erweitern sie das Skript um die folgende Funktionalität:
Zusätzlich zu den Datenfiles soll das Verzeichnis eine Datei wellenzahlen.txt enthalten, die definiert, wie die Ausgabedaten gefiltert werden sollen. In jeder Zeile dieser Datei steht ein Wellenzahl-Intervall, etwa so:
3998-4005 804-790 1550-1555 1205-1200
Die Ausgabedatei ihres Skripts soll dann nur noch diejenigen Zeilen enthalten, die wenigstens eine dieser Bedingungen erfüllen, d.h. die Messdaten für die Wellenzahlen ausgeben, die innerhalb eines der Intervalle liegen.