python filter harflarini bir qatorda

Pythonda bir harfga ega bo'lgan harflarni filtrlaydigan, lekin ularni o'chirib tashlamaydigan buyruq kerak:

string =raw_input("Enter the string:")
if string.startswith("a") and string.endswith("aaa"):
    print "String accepted"
else: print "String not accepted"
if "ba" in string:
    print "String accepted"
else :
    print "String is not accepted"

Stringda a va b tashqari boshqa harflarni taqiqlash uchun nima qilishim kerak?

2
Tarmoqdagi @machineyearning str ; string - standart kutubxona moduli, shuning uchun uni soya qilmaslik yaxshi, lekin bu juda katta ish emas.
qo'shib qo'ydi muallif jonrsharpe, manba
string - bu sinf emas, balki "qurilgan modul". Builtinlar __ builtins __ da topishingiz mumkin bo'lgan nomlardir. Ehtimol siz aytmoqchi bo'lgan narsa - bu magistral standart kutubxonadan moduldir.
qo'shib qo'ydi muallif Andrea Corbellini, manba
string - bu sinf emas, balki "qurilgan modul". Builtinlar __ builtins __ da topishingiz mumkin bo'lgan nomlardir. Ehtimol siz aytmoqchi bo'lgan narsa - bu magistral standart kutubxonadan moduldir.
qo'shib qo'ydi muallif Andrea Corbellini, manba
@machineyearning: jonrsharpe allaqachon aytganidek, bu yerda hech qanday shovullanmaydi
qo'shib qo'ydi muallif Andrea Corbellini, manba
@machineyearning: jonrsharpe allaqachon aytganidek, bu yerda hech qanday shovullanmaydi
qo'shib qo'ydi muallif Andrea Corbellini, manba

10 javoblar

Siz ularni faqat bo'sh mag'lubiyat bilan almashtirishingiz va qoldirilgan narsalarning yo'qligini tekshirishingiz mumkin:

string = raw_input("Enter the string:")
if string.replace('a','').replace('b',''):
    print "String not accepted"
else:
    print "String accepted"

Asl kod string o'zgartirilmaydi.

2
qo'shib qo'ydi
Python 2.x ichida qaysi kod string.translate (hech, 'ab')
qo'shib qo'ydi muallif Jon Clements, manba

Siz ularni faqat bo'sh mag'lubiyat bilan almashtirishingiz va qoldirilgan narsalarning yo'qligini tekshirishingiz mumkin:

string = raw_input("Enter the string:")
if string.replace('a','').replace('b',''):
    print "String not accepted"
else:
    print "String accepted"

Asl kod string o'zgartirilmaydi.

2
qo'shib qo'ydi
Python 2.x ichida qaysi kod string.translate (hech, 'ab')
qo'shib qo'ydi muallif Jon Clements, manba

Bir qatordan foydalanishingiz, stringingizni to'plamga aylantirishi va uning quyi qismini faqat a va b bilan to'ldiring. Misol -

s = raw_input("Enter the string:")
validset = set('ab')
if set(s).issubset(validset):
    print "String accepted"
else: 
    print "String not accepted"

Demo -

>>> s = "abbba"
>>> validset = set(['a','b'])
>>> if set(s).issubset(validset):
...     print "String accepted"
... else: print "String not accepted"
... 
String accepted

>>> s = "abbbac"
>>> if set(s).issubset(validset):
...     print "String accepted"
... else: print "String not accepted"
... 
String not accepted

Yoki sharhlarda ko'rsatilganidek, set.issuperset() dan foydalanishingiz mumkin. o'rniga. Misol -

s = raw_input("Enter the string:")
validset = set('ab')
if validset.issuperset(s):
    print "String accepted"
else: 
    print "String not accepted"
1
qo'shib qo'ydi
@AndreaCorbellini nima degani - ortiqcha validset = set ('ab')
qo'shib qo'ydi muallif Jon Clements, manba
Ha, to'g'ri, javobni sharhga joyladim. Rahmat
qo'shib qo'ydi muallif Anand S Kumar, manba
{"a", "b"} Python-da 2.6 yoki undan past darajada ishlamaydi, shuning uchun nima uchun u erda ishlaydigan biror narsa ishlatilgan.
qo'shib qo'ydi muallif Anand S Kumar, manba
{"a", "b"} da boshqa variant (kod ('ab') har doim juda ham qisqa va oson yoziladi)
qo'shib qo'ydi muallif Andrea Corbellini, manba
Bundan tashqari validset.issuperset (s) dan foydalanishingiz mumkin. Shunday qilib, s ni bir qatorga aylantirishga hojat yo'q.
qo'shib qo'ydi muallif Andrea Corbellini, manba

Bir qatordan foydalanishingiz, stringingizni to'plamga aylantirishi va uning quyi qismini faqat a va b bilan to'ldiring. Misol -

s = raw_input("Enter the string:")
validset = set('ab')
if set(s).issubset(validset):
    print "String accepted"
else: 
    print "String not accepted"

Demo -

>>> s = "abbba"
>>> validset = set(['a','b'])
>>> if set(s).issubset(validset):
...     print "String accepted"
... else: print "String not accepted"
... 
String accepted

>>> s = "abbbac"
>>> if set(s).issubset(validset):
...     print "String accepted"
... else: print "String not accepted"
... 
String not accepted

Yoki sharhlarda ko'rsatilganidek, set.issuperset() dan foydalanishingiz mumkin. o'rniga. Misol -

s = raw_input("Enter the string:")
validset = set('ab')
if validset.issuperset(s):
    print "String accepted"
else: 
    print "String not accepted"
1
qo'shib qo'ydi
@AndreaCorbellini nima degani - ortiqcha validset = set ('ab')
qo'shib qo'ydi muallif Jon Clements, manba
{"a", "b"} Python-da 2.6 yoki undan past darajada ishlamaydi, shuning uchun nima uchun u erda ishlaydigan biror narsa ishlatilgan.
qo'shib qo'ydi muallif Anand S Kumar, manba
Ha, to'g'ri, javobni sharhga joyladim. Rahmat
qo'shib qo'ydi muallif Anand S Kumar, manba
{"a", "b"} da boshqa variant (kod ('ab') har doim juda ham qisqa va oson yoziladi)
qo'shib qo'ydi muallif Andrea Corbellini, manba
Bundan tashqari validset.issuperset (s) dan foydalanishingiz mumkin. Shunday qilib, s ni bir qatorga aylantirishga hojat yo'q.
qo'shib qo'ydi muallif Andrea Corbellini, manba

Bu muntazam ifodalardan yaxshi foydalanish:

import re
my_string = raw_input("Enter the string:")
if re.match('^[ab]+$', my_string):
    print "String accepted"
else :
    print "String is not accepted"

Bu faqat nol bo'lmagan uzunlikdagi a va b belgilarni o'z ichiga olgan satrlarga mos keladi. Nolinchi uzunlikdagi satrlarni moslashni istasangiz + o'rniga * -ni ishlating.

1
qo'shib qo'ydi

Bu muntazam ifodalardan yaxshi foydalanish:

import re
my_string = raw_input("Enter the string:")
if re.match('^[ab]+$', my_string):
    print "String accepted"
else :
    print "String is not accepted"

Bu faqat nol bo'lmagan uzunlikdagi a va b belgilarni o'z ichiga olgan satrlarga mos keladi. Nolinchi uzunlikdagi satrlarni moslashni istasangiz + o'rniga * -ni ishlating.

1
qo'shib qo'ydi

Shu kabi narsalarni ko'ring. Bu siz bir nechta harflar, belgilar va hokazolarni o'rnatishga imkon beradi

valid_char = ['a', 'b']

def validate(s):
    for char in s:
        if char not in valid_char:
            return False
    return True

if validate(input("Enter the string:")):
    print('Sting Accepted')
else:
    print('Sting not Accepted')
0
qo'shib qo'ydi
Hmm, hech qachon ishlatilmadi, yuqoridagi javob yaxshi variantga o'xshaydi
qo'shib qo'ydi muallif Steven Summers, manba
O (n) murakkabligini olish uchun valid_char uchun setdan foydalanishni tavsiya qilaman.
qo'shib qo'ydi muallif Andrea Corbellini, manba

Shu kabi narsalarni ko'ring. Bu siz bir nechta harflar, belgilar va hokazolarni o'rnatishga imkon beradi

valid_char = ['a', 'b']

def validate(s):
    for char in s:
        if char not in valid_char:
            return False
    return True

if validate(input("Enter the string:")):
    print('Sting Accepted')
else:
    print('Sting not Accepted')
0
qo'shib qo'ydi
Hmm, hech qachon ishlatilmadi, yuqoridagi javob yaxshi variantga o'xshaydi
qo'shib qo'ydi muallif Steven Summers, manba
O (n) murakkabligini olish uchun valid_char uchun setdan foydalanishni tavsiya qilaman.
qo'shib qo'ydi muallif Andrea Corbellini, manba

Filtrlashni istagan harflar va birikmalarni qidirish uchun regexdan foydalanishingiz mumkin.

^((?![abcd]).)*$ will match things that don't contain a, b, c or d.

0
qo'shib qo'ydi

Filtrlashni istagan harflar va birikmalarni qidirish uchun regexdan foydalanishingiz mumkin.

^((?![abcd]).)*$ will match things that don't contain a, b, c or d.

0
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