Loading...
spetrov6 avatar spetrov6 2 Точки

Sum Of A Beach - Python Fundamentals More Exercises

Здравейте ,

От скоро уча python fundamentals , и имам затруднения със задачата Sum Of A Beach , а за тази задача не намирам решения в форума, и едвали ще бъде решена от лекторите понеже е в допълнителните задачи.

1.Sum of a Beach

Beaches are filled with sand, water, fish, and sun. Given a string, calculate how many times the words "Sand", "Water", "Fish", and "Sun" appear (case insensitive).

Examples:

input                                                                 output

WAtErSlIde                                                      1

GolDeNSanDyWateRyBeaChSuNN                3

gOfIshsunesunFiSh                                         4

cItYTowNcARShoW                                         0

Аз успях да реша задачата и judge даде 100/100 със кодът отдолу, но този код не ми се струва грам ок,и мисля че може да бъде направен много по-добре и по-красиво.

sentence = list(input().lower())
words = 0
for index in range(len(sentence)):
    if sentence[index] == "f" and index + 3 <= len(sentence):
        if sentence[index + 1] == "i" and sentence[index + 2] == "s" and sentence[index + 3] == "h":
            words += 1
    if sentence[index] == "s" and index + 3 <= len(sentence):
        if sentence[index + 1] == "a" and sentence[index + 2] == "n" and sentence[index + 3] == "d":
            words += 1
    if sentence[index] == "s" and index + 2 <= len(sentence):
        if sentence[index + 1] == "u" and sentence[index + 2] == "n":
            words += 1
    if sentence[index] == "w" and index + 4 <= len(sentence):
        if sentence[index + 1] == "a" and sentence[index + 2] == "t" and sentence[index + 3] == "e" and sentence[index + 4] == "r":
            words += 1
print(words)

Можете ли да ми дадете идей как да подобря кода.

Благодаря предварително, и приятен ден.

 

Тагове:
0
Fundamentals Module
idasanka avatar idasanka 105 Точки

seo little rock Great! didnt know about this before, I had doubts but thanks for clarifying.

-1
ANTONKOS avatar ANTONKOS 3 Точки

Колега,

Аз успях с този код използвайки .re module. Който намерих в Google.

Но мисля, че кодът идва прекалено бавен за judge.

import re
long_word = input()

ls1 = re.findall("fish", long_word, flags=re.IGNORECASE)
ls2 = re.findall("sun", long_word, flags=re.IGNORECASE)
ls3 = re.findall("water", long_word, flags=re.IGNORECASE)
ls4 = re.findall("sand", long_word, flags=re.IGNORECASE)
ls = ls1 + ls2 + ls3 + ls4

if not ls:
    print(0)
else:
    print(len(ls))

Дано малко съм бил полезен!

1
16/01/2021 00:20:10
spetrov6 avatar spetrov6 2 Точки

Благодаря ти.

0
KaloyanKoev avatar KaloyanKoev 4 Точки

Здравей, колега. 

След като се омотах няколко пъти на тази задача, стигах до следното решение:

https://pastebin.com/LkA2bB82

 

 

 

1
24/01/2021 23:22:49
DilianaS avatar DilianaS 3 Точки

Не се бях сетила за това, благодаря :)

0
Devihem avatar Devihem 3 Точки

.count  - определено изглежда като най правилното решение. 
благодаря за насоката
 :)

0
Lazar_off avatar Lazar_off 2 Точки

След доста четене стигнах до това решение! 
https://pastebin.com/b3JQvB8E

1
Julianh12 avatar Julianh12 3 Точки

Ето ви едно просто решение:)

string_word=input()
lower_string=string_word.lower()
n=0
string_names=["Water","Sun","Fish","Sand"]
string_list = [i.lower()for i in string_names]
for i in range(len(string_list)):
       new_string=string_list[i]
       n+=lower_string.count(new_string)
print(n)

1
Rosty_D avatar Rosty_D 14 Точки

Още по-опростено

https://pastebin.com/hdd5MicM

1
theCoon avatar theCoon 3 Точки

INPUT_STR = input()
LOWER_CASE_STR = INPUT_STR.casefold()
COUNTER = 0

for word in ('sand', 'water', 'fish', 'sun'):
    COUNTER += LOWER_CASE_STR.count(word)

print(COUNTER)

1
georgi.nachev avatar georgi.nachev 3 Точки

С помощ от google, решението излезн 3 реда. Judge дава 100/100.

Поздрави! :)

string = input()
string_lower = string.lower()
print(string_lower.count('sand') + string_lower.count('water') + string_lower.count('fish') + string_lower.count('sun'))
2
Daooobg avatar Daooobg 1 Точки
word = input()

word = word.lower()

joined_split_list = word.split('sand') + word.split('water') + word.split('fish') + word.split('sun')


print(len(joined_split_list) - 4)
0
mihailzhelyazkov avatar mihailzhelyazkov 1 Точки

Едно решение с regex:

import re

input_text = input()
pattern = r"(?:Sand|Water|Fish|Sun)"

matches = re.findall(pattern, input_text, re.IGNORECASE)

print(len(matches))
0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.