Pythonda kichik harflarni qanday aniqlash mumkin?

Bir qatorda kichik harflarni aniqlaydigan funktsiya mavjudligini bilishim kerak. Men ushbu dasturni yozishni boshladim deb ayting:

s = input('Type a word')

Belgilangan megabayt ichidagi kichik harfni aniqlashga imkon beruvchi funksiya bormi? Ehtimol, bu harflarni boshqa o'zgaruvchiga berish bilan tugashga yoki faqat kichik harflar yoki kichik harflar sonini kiritish bilan tugash mumkin.

Men u bilan nima qilishni xohlasam-u, men kichik harflar borligini aniqlashni juda qiziqaman. Eng sodda uslublar xush kelibsiz, men faqatgina boshlang'ich piton kursida bo'ldim. Shunday qilib, men o'qituvchimga oraliq topshirganimda murakkab echimlarni ko'rishni xohlamas edim. Yordamingiz uchun tashakkur!

21
Nima uchun noto'g'ri javobni yuqoriga ko'tarmaslik kerak? har qanday (filtr (str.islower, s)) bo'lishi kerak
qo'shib qo'ydi muallif stanleyli, manba
, agar mavjud bo'lsa, (c.islower ()) ning c ning uchun s() ning kodi kamida bitta kichik harf mavjudligini aniqlaydi.
qo'shib qo'ydi muallif eumiro, manba
Python 2.x yoki Python 3.x dan foydalanasizmi?
qo'shib qo'ydi muallif Mark Byers, manba
@stanleyli Buni ko'rsatganingiz uchun tashakkur! Birinchi marta noto'g'ri yozilgan bo'lishi kerak.
qo'shib qo'ydi muallif Noctis Skytower, manba

6 javoblar

Agar belgi kamroq yoki yo'qligini tekshirish uchun str islower usulini ishlating. Ushbu oddiy majburiy dastur o'zingizdagi barcha kichik harflarni chiqaradi:

for c in s:
    if c.islower():
         print c

Python-3da print c o'rniga print (c) dan foydalaning.


Bu harflarni boshqa o'zgaruvchiga tayinlash ehtimoldan xoli emas.

Buni amalga oshirish uchun ro'yxatni tushunishdan foydalanishni taklif qilaman, ammo siz buni kursda o'qimasligingiz mumkin:

>>> s = 'abCd'
>>> lowercase_letters = [c for c in s if c.islower()]
>>> print lowercase_letters
['a', 'b', 'd']

Yoki mag'lubiyatni olish uchun bilan birgalikda '' kodini qo'shing.

>>> lowercase_letters = ''.join(c for c in s if c.islower())
>>> print lowercase_letters
'abd'
28
qo'shib qo'ydi

Ichki funktsiyani har qanday va generatorni ishlatishingiz mumkin.

>>> any(c.islower() for c in 'Word')
True

>>> any(c.islower() for c in 'WORD')
False
9
qo'shib qo'ydi
'Bu harflarni boshqa o'zgaruvchiga tayinlash ehtimoldan xoli emas. . har qanday dan foydalanish bu imkoniyatni bekor qiladi.
qo'shib qo'ydi muallif Martijn Pieters, manba
"... Men kichik harflar borligini aniqlashni juda xohlayman." Mening taklifim javob bo'lishi mumkin deb o'ylayman.
qo'shib qo'ydi muallif Hyungoo Kang, manba

Kichik harflar uchun ikki xil usul mavjud:

  1. Use str.islower() to find lowercase characters. Combined with a list comprehension, you can gather all lowercase letters:

    lowercase = [c for c in s if c.islower()]
    
  2. You could use a regular expression:

    import re
    
    lc = re.compile('[a-z]+')
    lowercase = lc.findall(s)
    

Birinchi usul alohida belgilar ro'yxatini qaytaradi, ikkinchisi guruhlari belgilar ro'yxatini qaytaradi:

>>> import re
>>> lc = re.compile('[a-z]+')
>>> lc.findall('AbcDeif')
['bc', 'eif']
8
qo'shib qo'ydi
Birinchi parcha sizning fikringizcha emas.
qo'shib qo'ydi muallif georg, manba
Yaxshiroq ko'rinadi)) BTW, bu filter uchun joriy foydalanish holati bo'lib tuyuladi - hech kim gapirilmadi.
qo'shib qo'ydi muallif georg, manba
@MartijnPieters: qanday qilib filtr (str.islower, s) haqida?
qo'shib qo'ydi muallif georg, manba
@ thg435: Oops. :-P
qo'shib qo'ydi muallif Martijn Pieters, manba
@ thg435: filtri (lambda c: c.islower (), s) yoki filtri (metodseler ('islower'), s) deb o'ylamayman , albatta.
qo'shib qo'ydi muallif Martijn Pieters, manba
@ thg435: Albatta, bu biroz tozalovchi; u unicode uchun ishlamaydi, lekin OP uchun juda yaxshi ishlaydi.
qo'shib qo'ydi muallif Martijn Pieters, manba
@ thg435 Javoblar Pythonik bo'lishi kerak deb o'ylayman. Sizning ... ... yaxshi.
qo'shib qo'ydi muallif Hyungoo Kang, manba

There are many methods to this, here are some of them:

  1. Using the predefined function character.islower():

    >>> c = 'a'
    >>> print(c.islower()) #this prints True
    
  2. Using the ord() function to check whether the ASCII code of the letter is in the range of the ASCII codes of the lowercase characters:

    >>> c = 'a'
    >>> print(ord(c) in range(97,123)) #this will print True
    
  3. Checking if the letter is equal to it's lowercase:

    >>> c = 'a'
    >>> print(c.lower()==c) #this will print True
    

Lekin bu hammasi bo'lmasligi mumkin, agar siz bularni yoqtirmasangiz o'z yo'llaringizni topishingiz mumkin: D.

Nihoyat, aniqlaylik:

d = str(input('enter a string : '))
lowers = [c for c in d if c.islower()]
#here i used islower() because it's the shortest and most-reliable one (being a predefined function), using this list comprehension is the most efficient way of doing this
4
qo'shib qo'ydi
Bunga boshqa mavjud javoblarga nima qo'shiladi?
qo'shib qo'ydi muallif cricket_007, manba
Ikkinchi va uchinchi usul yuqorida qayd etilmagan
qo'shib qo'ydi muallif Mr Geek, manba

Agar string kiritish uchun raw_input dan foydalaning. str ob'ektini islower usulidan foydalaning.

s = raw_input('Type a word')
l = []
for c in s.strip():
    if c.islower():
        print c
        l.append(c)
print 'Total number of lowercase letters: %d'%(len(l) + 1)

Faqat bajaring -

dir(s)

and you will find islower and other attributes of str

3
qo'shib qo'ydi
Izoh: Python 2.x da raw_input() Python 3.x da input() bilan almashtiriladi. Bu juda muhim, chunki muallif qaysi versiyani ishlatayotganini aniqlamadi.
qo'shib qo'ydi muallif rbaleksandar, manba
import re
s = raw_input('Type a word: ')
slower=''.join(re.findall(r'[a-z]',s))
supper=''.join(re.findall(r'[A-Z]',s))
print slower, supper

Tintlar:

Type a word: A Title of a Book
itleofaook ATB

Yoki ro'yxatni tushunish/generatorlar ifodasini ishlatishingiz mumkin:

slower=''.join(c for c in s if c.islower())
supper=''.join(c for c in s if c.isupper())
print slower, supper

Tintlar:

Type a word: A Title of a Book
itleofaook ATB
1
qo'shib qo'ydi
Python
Python
372 ishtirokchilar

Bu guruh python dasturlash tilini muhokama qilish uchun. Iltimos, o'zingizni hurmat qiling va faqat dasturlash bo'yicha yozing. Botlar mavzusini @botlarhaqida guruhida muhokama qling! FAQ: @PyFAQ Offtopic: @python_uz_offtopic

Python offtopic group !
Python offtopic group !
150 ishtirokchilar

@python_uz gruppasining offtop gruppasi. offtop bo'lsa ham reklama mumkin emas ) Boshqa dasturlash tiliga oid gruppalar @languages_programming