Python :: Aufgabe #347

3 Lösungen Lösungen öffentlich

Zweitgrößte Ziffer eines alphanumerischen Textes

Anfänger - Python von JKooP - 18.04.2021 um 11:04 Uhr
Gegeben ist ein alphanumerischer Text (String) der nur Kleinbuchstaben und die positiven Ziffern 0-9 enthält.
Ziel soll es sein, die zweitgrößte Ziffer (nicht Index) des Textes zu ermitteln.
Ist kein zweitgrößter Wert enthalten, soll als Ergebnis -1 ausgegeben werden.

Beispiele:
t = "abc12321efg"
Lösung: 2 => [1, 2, 3]

t = "abc111def"
Lösung: -1 => [1] Kein zweiter Wert vorhanden!

Erstelle eine Methode/Funktion, die obige Aufgabenstellung umsetzt.

Viel Spaß

Lösungen:

vote_ok
von eisheiliger (3750 Punkte) - 19.04.2021 um 18:24 Uhr
Quellcode ausblenden Python-Code

"""
#347: Zweitgrößte Ziffer eines alphanumerischen Textes
Ziel soll es sein, die zweitgrößte Ziffer (nicht Index) des Textes zu ermitteln.
Ist kein zweitgrößter Wert enthalten, soll als Ergebnis -1 ausgegeben werden.
"""


def prf_2num(text):
    arr = []
    for alle in text:
        arr.append(alle)
    text = sorted(set(arr))
    if text[0].isdecimal() is True and text[1].isdecimal() is True:
        print(text, "Loesung:", (text[1]))
    else:
        print(text, "Kein zweiter numerischer Wert vorhanden", (text[0]))


def main():
    prf_2num("abc12321efg")
    prf_2num("abc111def")


if __name__ == '__main__':
    main()


vote_ok
von nitnat (670 Punkte) - 03.05.2021 um 20:08 Uhr
Quellcode ausblenden Python-Code
def second_max_digit(alpha_num_string):
    char_set_nums = {ord(char) for char in alpha_num_string if ord(char) < 97}
    if len(char_set_nums) > 1:
        return chr(sorted(char_set_nums, reverse=True)[1])
    else:
        return "-1"
    
    
# test

data = ["abc12321efg", "abc111def", "yyoxicuwoeiru9887hksjdhf123985345", "abcxxnodigithereyyycba"]

for el in data:
    print(f'{el}: {second_max_digit(el)}')
vote_ok
von AlexGroeg (2010 Punkte) - 06.05.2021 um 12:38 Uhr
Quellcode ausblenden Python-Code

def ist_ziffer(text):
    z = []
    for i in text:
        if i.isdigit() and not int(i) in z:
            z.append(int(i))
            z.sort()            
    return z


beispiele = ["abc12321efg", 
             "abc111def"]

for t in beispiele:
    print('\nt = "{}"'.format(t))
    try:
        print('Lösung: {} => {}'.format( ist_ziffer(t)[-2], ist_ziffer(t)))
    except:
        print('Lösung: {} => {}'.format( ist_ziffer(t)[-1], ist_ziffer(t)), 
              'Kein zweiter Wert vorhanden!')