Професионална програма
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
Lazar_off avatar Lazar_off 1 Точки

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

0
Julianh12 avatar Julianh12 2 Точки

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

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)

0