• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[Solved] Czy string składa się z samych dużych liter?

Object Storage Arubacloud
0 głosów
299 wizyt
pytanie zadane 8 maja 2020 w Python przez TeaCup Obywatel (1,370 p.)
edycja 8 maja 2020 przez TeaCup

Hej,

Mam zadanie w którym chce określić czy dany ciąg znaków składa się tylko z samych dużych liter.

Jeśli tak to ma zwrócić True. W przeciwnym razie False.

Oto co do tej pory mi się udało zrobić:

import re

def is_all_upper(text):
    # your code here
    str_len = len(text)
    m = re.search(f'[A-Z]{str_len}', text)
    return m

print(is_all_upper('ALL UPPER'))  # == True
print(is_all_upper('all lower'))  # == False
print(is_all_upper('mixed UPPER and lower'))  # == False
print(is_all_upper(''))  # == True

Problem mam z wstawieniem str_len do tego wyrażenia regularnego. Czy może ktoś wytłumaczyć jak to zrobić.

Konsola mi zwraca same None jak na razie.

Pozdrawiam.

----------

EDITED:

Poradziłem już sobie z zadaniem. Oto mój kod:

def is_all_upper(text: str) -> bool:
    if len(text) <= 0:
        return True
    if text[0] == " ":
        return True
    digit_list = ["1", "2" , "3", "4", "5", "6", "7", "8", "9", "0"]
    for digit in digit_list:
        if digit in text:
            return True
    return text.isupper()

 

3 odpowiedzi

+1 głos
odpowiedź 8 maja 2020 przez Konti2 Użytkownik (880 p.)
wybrane 8 maja 2020 przez TeaCup
 
Najlepsza

def is_all_upper(text):
    if text.upper() == text:
        return True
    return False

A co sądzisz o tym?

komentarz 8 maja 2020 przez TeaCup Obywatel (1,370 p.)
Ok. To jest bardzo dobre rozwiązanie. Tak przynajmniej myślę.
1
komentarz 8 maja 2020 przez adrian17 Ekspert (344,860 p.)
>>> is_all_upper(".")
True

"." nie składa się z "samych dużych liter".

(BTW, zamiast `if` a można od razu zrobić `return` w jednej linii)

komentarz 8 maja 2020 przez Konti2 Użytkownik (880 p.)
Faktycznie, źle zrozumiałem zadanie
komentarz 8 maja 2020 przez Konti2 Użytkownik (880 p.)

@adrian17,

def is_all_upper(text):
    if text.replace(' ','').isalpha() == False:
        return False
    return text.upper() == text

A tak?

+1 głos
odpowiedź 8 maja 2020 przez adrian17 Ekspert (344,860 p.)
if text[0] == " ":

Dlaczego jeśli tekst zaczyna się od spacji, to stwierdzasz że składa się z samych wielkich liter?

    digit_list = ["1", "2" , "3", "4", "5", "6", "7", "8", "9", "0"]
    for digit in digit_list:
        if digit in text:
            return True

Analogicznie: czemu jeśli ma jakąkolwiek cyfrę, to stwierdzasz że składa się z samych wielkich liter?

Anyway:

Problem mam z wstawieniem str_len do tego wyrażenia regularnego

nie trzeba. Wystarczy re.match na "od początku do końca składa się z dowolnego ciągu wielkich liter". Nie trzeba tam wpisywać ilości.

komentarz 8 maja 2020 przez TeaCup Obywatel (1,370 p.)
@adrian17 Takie były założenia zadania. Dzięki za podpowiedz odnośnie re.match. Podał byś jeszcze przykład z re.match?
1
komentarz 8 maja 2020 przez adrian17 Ekspert (344,860 p.)

Podał byś jeszcze przykład z re.match?

re.match(r"^[A-Z]+$", text)

 

0 głosów
odpowiedź 8 maja 2020 przez mokrowski Mędrzec (155,460 p.)
def is_all_upper(msg):
    import string
    return all(map(lambda x: x in string.ascii_uppercase, msg))

Moduł re to na ten problem armata na wróble.

Podobne pytania

0 głosów
3 odpowiedzi 1,807 wizyt
pytanie zadane 10 listopada 2018 w Python przez gunaterek Bywalec (2,760 p.)
0 głosów
1 odpowiedź 778 wizyt
+1 głos
1 odpowiedź 388 wizyt
pytanie zadane 2 sierpnia 2022 w Python przez Mavimix Dyskutant (8,390 p.)

92,555 zapytań

141,403 odpowiedzi

319,553 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...