[Tutor] Feedback on coding style

Alex Kleider alexkleider at gmail.com
Sun Jun 26 15:37:43 EDT 2022


I don't see this code on your github account.
(https://github.com/LeamHall?tab=repositories)
I'd be interested in seeing the current version having done something
somewhat related.
(https://github.com/alexKleider/blood-pressure-record)
My code needs a little updating (with regard to the README at least)
which I'll do if prodded a bit:-)
a
PS Disclaimer: python for me is an avocation, not a vocation!

On Mon, May 9, 2022 at 5:03 AM Leam Hall <leamhall at gmail.com> wrote:
>
> Hey all,
>
> I'm looking for general Python code critique, feel free to share snarky comments.  :)  The parameters are:
>   1. Code to Python 3.6 or so.
>   2. Use only the standard library or locally created modules.
>   3. Keep it clean and simple so new Pythonistas can understand and contribute.
>
> Let me know how to make this better.
>
> Leam
> --
> Automation Engineer        (reuel.net/resume)
> Scribe: The Domici War     (domiciwar.net)
> General Ne'er-do-well      (github.com/LeamHall)
>
> ###
>
> #!/usr/bin/env python3
>
> # name:     bp_tracker.py
> # version:  0.0.1
> # date:     20220509
> # author:   Leam Hall
> # desc:     Track and report on blood pressure numbers.
>
> # Notes:
> #  Datafile expects three ints and one float, in order.
>
> # TODO
> #   Add statistical analysis for standard deviation.
> #   Report based on time of day (early, midmorning, afternoon, evening)
> #   (?) Add current distance from goal?
>
> import argparse
> from datetime import datetime
> import os.path
>
> def array_from_file(report_file):
>    data = []
>    with open(report_file, 'r') as file:
>      for line in file:
>        line.strip()
>        datum = line.split()
>        if len(datum) == 4:
>          data.append(datum)
>        else:
>          continue
>    return data
>
> def report(report_data):
>    highest_systolic  = 0
>    highest_diastolic = 0
>    highest_pulse     = 0
>    latest            = -1.0
>    for datum in report_data:
>      systolic  = int(datum[0])
>      diastolic = int(datum[1])
>      pulse     = int(datum[2])
>      date      = float(datum[3])
>      if systolic > highest_systolic:
>        highest_systolic = systolic
>        highest_systolic_event = datum
>      if diastolic > highest_diastolic:
>        highest_diastolic = diastolic
>        highest_diastolic_event = datum
>      if pulse > highest_pulse:
>        highest_pulse = pulse
>        highest_pulse_event = datum
>      if date > latest:
>        latest_record = datum
>
>    print("Highest Systolic: {}/{} {} {}".format(*highest_systolic_event))
>    print("Highest Diastolic: {}/{} {} {}".format(*highest_diastolic_event))
>    print("Highest Pulse: {}/{} {} {}".format(*highest_pulse_event))
>    print("Latest Record: {}/{} {} {}".format(*latest_record))
>
> def result_string(report_list):
>    return "{} {} {} {}".format(*report_list)
>
> report_file = "bp_numbers.txt"
>
> parser = argparse.ArgumentParser()
> parser.add_argument("-a", "--add", nargs=3,
>    help = "Add in the order of systolic, diastolic, pulse")
> parser.add_argument("-f", "--file", help = "Report file")
> args    = parser.parse_args()
>
> if args.file:
>    report_file = args.file
>
> if args.add:
>    # This format allows sequencing now and parsing later.
>    timestamp   = datetime.now().strftime("%Y%m%d.%H%M")
>    this_report = args.add
>    this_report.append(timestamp)
>    with open(report_file, 'a') as file:
>      file.write(result_string(this_report) + "\n")
> else:
>    # Default behavior is to report.
>    if os.path.exists(report_file):
>      try:
>        report_data = array_from_file(report_file)
>        report(report_data)
>      except:
>        print("Error processing report data")
>    else:
>      print("Cannot find ", report_file)
>
> ###
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor



-- 
alex at kleider.ca  (sent from my current gizmo)


More information about the Tutor mailing list