View Single Post
Trådstarter
19
Sitat av Realist1 Vis innlegg
Kan jo også nevne at det er vanlig å få den slags input «utenfra», spesielt når det er snakk om så mange tilfeller.

Her er et annet eksempel, som viser hvordan alle parameterne ligger i tekstfilen 'parametere.txt', og leses inn av Python-programmet som holdes enkelt og pent, uansett hvor mange hundretusenmillioner parametere du planlegger å dra inn.


parametere.txt

Kode

1 2 2
4 6 5
3 4 4
1 2 3
4 2 5
3 4 3
script.py

Kode

def f(A, Z, m, k1, k2):
    return Z * k1 + (A - Z) * k2 + m * Z


k1, k2 = 3, 4
resultater = []

with open('parametere.txt') as file:
    for line in file.readlines():
        p = [int(n) for n in line.split()]
        resultater.append(f(*p, k1, k2))

print(resultater)
# >>> [6, 40, 24, 8, 24, 20]
Bare vær obs på rekkefølgen på parameterne. Her leses de inn i funksjonen i rekkefølgen A-Z-m (slik du også oppga funksjonen), mens du ser ut til å lage dicts med rekkefølgen Z-A-m. Bare en liten detalj som kan forårsake feil hvis tunga ikke holdes i rett munn.
Vis hele sitatet...
Ok-sitter nå litt fast med en kjemi-dictionary der jeg vil ha ut to parametre irradiation time:<innhold> og congestion:<innhold>.
Jeg prøver alltså å få printet ut alle verdier for disse to parametrene
via en liste med en for loop.
snippet fra listen er

Kode

{'run_data': {'timestamp': '22:41:22 12 June 2020',
  'run_name': '* Iron irradiation with 14MeV',
  'flux_name': 'Neutron generator spectrum'},
 'inventory_data': [{'irradiation_time': 0.0,
   'cooling_time': 0.0,
   'flux': 2173374.9239999996,
   'total_heat': 0.0,
   'alpha_heat': 0.0,
   'beta_heat': 0.0,
   'gamma_heat': 0.0,
   'ingestion_dose': 0.0,
   'inhalation_dose': 0.0,
   'dose_rate': {'type': '', 'distance': 0.0, 'mass': 0.0, 'dose': 0.0},
   'nuclides': [{'element': 'Fe',
     'isotope': 54,
     'state': '',
     'half_life': 0.0,
     'grams': 9001.755111054154,
     'activity': 0.0,
     'heat': 0.0,
     'alpha_heat': 0.0,
     'beta_heat': 0.0,
     'gamma_heat': 0.0,
     'dose': 0.0,
     'ingestion': 0.0,
     'inhalation': 0.0},
    osv
Element 0 i inventory['inventory_data'][0]['irradiation_time'] gir tiden og element 7 gir ingestion om man teller. Så prøver jeg å liste innholdet for tid og ingestion i hele dictionarien med

Kode

for (key,value)in inventory.items():
    print('irrtime:',inventory['inventory_data'][0]['irradiation_time'],'ingestion_dose:',inventory['inventory_data'][7]['irradiation_time'])
Men får bare ut

Kode

irrtime: 0.0 ingestion_dose: 12600.0
irrtime: 0.0 ingestion_dose: 12600.0
Det skal visst gå og gøre dette også med en for loop men spørs om den må nestes på en eller annen måte?