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!')

1810275

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.