<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _pos_nt(pr, pos, stranded=False):
 """ Given a pileup read and a position, return the base that is covered by the read at the given position if the position is covered. Parameters pr : pysam.calignmentfile.PileupRead Region of type chrom:start-end, chrom:start-end:strand, or [chrom, pos : int Zero-based position of the nucleotide of interest in genomic coordinates. stranded : boolean Boolean indicating whether data is stranded and stranded nucleotide should be returned. Assumes R1 read on reverse strand implies + strand coverage etc. Returns ------- nt : str or None If None, then the read did not cover the position. If not None, returns the nucleotide at that position (with + or - appended to indicate strand if desired). """

    nt = None
    bases = dict(zip(pr.alignment.get_reference_positions(), 
                     list(pr.alignment.seq.upper())))
    if pos in bases.keys():
        nt = bases[pos]
    if nt and stranded:
        strand = None
        if pr.alignment.is_read1 and pr.alignment.is_reverse:
            strand = '+'
        if pr.alignment.is_read2 and not pr.alignment.is_reverse:
            strand = '+'
        if pr.alignment.is_read1 and not pr.alignment.is_reverse:
            nt = str(Seq(nt).reverse_complement())
            strand = '-'
        if pr.alignment.is_read2 and pr.alignment.is_reverse:
            nt = str(Seq(nt).reverse_complement())
            strand = '-'
        nt = '{}{}'.format(nt, strand)
    return nt