Решение на doge от Станислав Димитров

Обратно към всички решения

Към профила на Станислав Димитров

Резултати

  • 8 точки от тестове
  • 2 отнети точки
  • 6 точки общо
  • 12 успешни тест(а)
  • 3 неуспешни тест(а)

Код

def wow_such_much(start, end):
doge_array = range(start, end)
result = []
for element in doge_array:
result.append(element)
if (element % 3 == 0):
replace_element = doge_array.index(element)
result[replace_element] = "such"
elif (element % 5 == 0):
replace_element = doge_array.index(element)
result[replace_element] = "much"
if element % 3 == 0 and element % 5 == 0:
replace_element = doge_array.index(element)
result[replace_element] = "suchmuch"
return result
def count_doge_words(str):
word_count = 0
doge_words = ["much", "such", "so", "lol", "wow", "very"]
for words in str.split(" "):
if words in doge_words:
word_count += 1
return word_count

Лог от изпълнението

............FFF
======================================================================
FAIL: test_suchmuch_to_100 (test.TestSuchMuchDoge)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20141216-14586-1cj3wwy/test.py", line 38, in test_suchmuch_to_100
    '92', 'such', '94', 'much', 'such', '97', '98', 'such'])
AssertionError: Lists differ: [1, 2, 'such', 4, 'much', 'suc... != ['1', '2', 'such', '4', 'much'...

First differing element 0:
1
1

Diff is 1840 characters long. Set self.maxDiff to None to see it.

======================================================================
FAIL: test_suchmuch_to_16 (test.TestSuchMuchDoge)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20141216-14586-1cj3wwy/test.py", line 20, in test_suchmuch_to_16
    '11', 'such', '13', '14', 'suchmuch'])
AssertionError: Lists differ: [1, 2, 'such', 4, 'much', 'suc... != ['1', '2', 'such', '4', 'much'...

First differing element 0:
1
1

- [1,
+ ['1',
?  + +

-  2,
+  '2',
?  + +

   'such',
-  4,
+  '4',
?  + +

   'much',
   'such',
-  7,
+  '7',
?  + +

-  8,
+  '8',
?  + +

   'such',
   'much',
-  11,
+  '11',
?  +  +

   'such',
-  13,
+  '13',
?  +  +

-  14,
+  '14',
?  +  +

   'suchmuch']

======================================================================
FAIL: test_suchmuch_to_2 (test.TestSuchMuchDoge)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20141216-14586-1cj3wwy/test.py", line 14, in test_suchmuch_to_2
    self.assertEqual(solution.wow_such_much(1, 2), ['1'])
AssertionError: Lists differ: [1] != ['1']

First differing element 0:
1
1

- [1]
+ ['1']
?  + +


----------------------------------------------------------------------
Ran 15 tests in 0.046s

FAILED (failures=3)

История (6 версии и 7 коментара)

Станислав обнови решението на 06.03.2014 02:31 (преди около 10 години)

+#Първа задача, но не разбрах точно как мога да ги заместя на #тяхно място.
+def wow_such_much(start, end):
+
+ fx = []
+ px = []
+ index = 0
+
+ while start <= end:
+ index +=1
+ start+=1
+ fx.append(index)
+
+ for element in fx:
+
+ if element % 3 == 0 and element % 5 == 0:
+ fx.remove(element)
+ px.append("suchmuch")
+ elif element % 5== 0:
+ fx.remove(element)
+ px.append('much')
+ elif element % 3 ==0:
+ fx.remove(element)
+ px.append('such')
+ fx.extend(px)
+ print(fx)
+
+def main():
+ print(wow_such_much(1, 16))
+
+if __name__ == '__main__':
+ main()
+
+
+# Втора задача излиза грешна на unittest-a също :(
+
+def count_doge_words(str1):
+ wrdCount = 0
+
+ removePunc = ''.join( c for c in str1 if c not in '?:!/;.,@#$%^&*()[]}{\\/' )
+
+ for x in removePunc.split(" "):
+ if x == "wow":
+ wrdCount +=1
+ elif x == "lol":
+ wrdCount +=1
+ elif x == "so":
+ wrdCount +=1
+ elif x == "such":
+ wrdCount +=1
+ elif x == "much":
+ wrdCount +=1
+ elif x == "very":
+ wrdCount +=1
+
+ print(wrdCount)
+
+def main():
+ print(count_doge_words("wow @much wow wow wow! hard\\ such /.difficult"))
+ print(count_doge_words("wow much hard such difficult"))
+
+if __name__ == '__main__':
+ main()

Станислав обнови решението на 06.03.2014 15:32 (преди около 10 години)

-#Първа задача, но не разбрах точно как мога да ги заместя на #тяхно място.
+#Първа задача
def wow_such_much(start, end):
-
- fx = []
- px = []
- index = 0
+
+ fx = []
+ px = []
+ index = 0
- while start <= end:
- index +=1
- start+=1
- fx.append(index)
+ while start <= end:
+ index +=1
+ start+=1
+ fx.append(index)
- for element in fx:
-
- if element % 3 == 0 and element % 5 == 0:
- fx.remove(element)
- px.append("suchmuch")
- elif element % 5== 0:
- fx.remove(element)
- px.append('much')
- elif element % 3 ==0:
- fx.remove(element)
- px.append('such')
- fx.extend(px)
- print(fx)
+ for element in fx:
+
+ if element % 3 == 0 and element % 5 == 0:
+ fx.remove(element)
+ px.append("suchmuch")
+ elif element % 5== 0:
+ fx.remove(element)
+ px.append('much')
+ elif element % 3 ==0:
+ fx.remove(element)
+ px.append('such')
+ fx.extend(px)
+ return(fx)
def main():
- print(wow_such_much(1, 16))
+ print(wow_such_much(1, 16))
if __name__ == '__main__':
- main()
+ main()
+# Втората задача
-# Втора задача излиза грешна на unittest-a също :(
-
def count_doge_words(str1):
- wrdCount = 0
+ wrdCount = 0
+
+ removePunc = ''.join( c for c in str1 if c not in '?:!/;.,@#$%^&*()[]}{\\/' )
+
+ for x in removePunc.split(" "):
+ if x == "wow":
+ wrdCount +=1
+ elif x == "lol":
+ wrdCount +=1
+ elif x == "so":
+ wrdCount +=1
+ elif x == "such":
+ wrdCount +=1
+ elif x == "much":
+ wrdCount +=1
+ elif x == "very":
+ wrdCount +=1
+
+ return(wrdCount)
+
+def main():
+ print(count_doge_words("wow @much wow wow wow! hard\\ such /.difficult"))
+ print(count_doge_words("wow much hard such difficult"))
+
+if __name__ == '__main__':
+ main()
+
+#Предизвикателство
+def is_perfect(n):
+ index = 1
+ value = 0
+ isTrue = True
+ while index < n:
+ if n % index == 0:
+ value = value + index
+ index+=1
+
+ if value != n:
+ return(False)
+ else:
+ return(True)
- removePunc = ''.join( c for c in str1 if c not in '?:!/;.,@#$%^&*()[]}{\\/' )
-
- for x in removePunc.split(" "):
- if x == "wow":
- wrdCount +=1
- elif x == "lol":
- wrdCount +=1
- elif x == "so":
- wrdCount +=1
- elif x == "such":
- wrdCount +=1
- elif x == "much":
- wrdCount +=1
- elif x == "very":
- wrdCount +=1
-
- print(wrdCount)
-
+
def main():
- print(count_doge_words("wow @much wow wow wow! hard\\ such /.difficult"))
- print(count_doge_words("wow much hard such difficult"))
+ print(is_perfect(6))
+ print(is_perfect(7))
+ print(is_perfect(8))
+ print(is_perfect(10))
+
if __name__ == '__main__':
main()

След това можеш да помислиш и над следните неща:

  • _Забележка_: В подаваните изречения не очаквайте да има каквито и да е препинателни знаци.
  • range е твой приятел! прегледай help(range) и си поиграй с него в конзолата
  • имената не трябва да включват съкращения и трябва да са говорими
  • fx.remove(element) защо?(въпроса е реторичен)
  • помисли си как можеш да постегнеш следните два фрагмента:
    • 1:

      if x == "wow":
          wrdCount +=1
      elif x == "lol":
          wrdCount +=1
      elif x == "so":
          wrdCount +=1
      elif x == "such":
          wrdCount +=1
      elif x == "much":
          wrdCount +=1
      elif x == "very":
          wrdCount +=1
      
    • 2:

      if value != n:
          return(False)
      else:
          return(True)
      

Станислав обнови решението на 06.03.2014 20:24 (преди около 10 години)

-#Първа задача
-def wow_such_much(start, end):
-
- fx = []
- px = []
- index = 0
+# Втората задача. part 3
- while start <= end:
- index +=1
- start+=1
- fx.append(index)
-
- for element in fx:
-
- if element % 3 == 0 and element % 5 == 0:
- fx.remove(element)
- px.append("suchmuch")
- elif element % 5== 0:
- fx.remove(element)
- px.append('much')
- elif element % 3 ==0:
- fx.remove(element)
- px.append('such')
- fx.extend(px)
- return(fx)
-
-def main():
- print(wow_such_much(1, 16))
-
-if __name__ == '__main__':
- main()
-
-# Втората задача
-
def count_doge_words(str1):
wrdCount = 0
-
- removePunc = ''.join( c for c in str1 if c not in '?:!/;.,@#$%^&*()[]}{\\/' )
-
- for x in removePunc.split(" "):
- if x == "wow":
- wrdCount +=1
- elif x == "lol":
- wrdCount +=1
- elif x == "so":
- wrdCount +=1
- elif x == "such":
- wrdCount +=1
- elif x == "much":
- wrdCount +=1
- elif x == "very":
- wrdCount +=1
-
+ f = ["much", "such", "so", "lol", "wow", "very"]
+ for x in str1.split(" "):
+ cont = f.__contains__(x)
+ if cont:
+ wrdCount += 1
return(wrdCount)
-
def main():
- print(count_doge_words("wow @much wow wow wow! hard\\ such /.difficult"))
+ print(count_doge_words("wow much wow wow wow hard such difficult"))
print(count_doge_words("wow much hard such difficult"))
if __name__ == '__main__':
- main()
-
+ main()
-#Предизвикателство
-def is_perfect(n):
- index = 1
- value = 0
- isTrue = True
- while index < n:
- if n % index == 0:
- value = value + index
- index+=1
-
- if value != n:
- return(False)
- else:
- return(True)
-
-
-def main():
- print(is_perfect(6))
- print(is_perfect(7))
-
- print(is_perfect(8))
- print(is_perfect(10))
-
-if __name__ == '__main__':
- main()

Станислав обнови решението на 07.03.2014 08:25 (преди около 10 години)

-# Втората задача. part 3
+# След дадените препоръки.
+def wow_such_much(start, end):
+ container = []
+ index = 0
+ while start <= end:
+ index +=1
+ start+=1
+ container.append(index)
+
+ count = 0
+ for element in container:
+ contain_such = container.__contains__(element%3==0)
+ contain_much = container.__contains__(element%5==0)
+ contain_suchMuch =container.__contains__(element%3==0 and element%5==0)
+ if contain_such:
+ index_such = container.index(element)
+ set_such = container.__setitem__(index_such,"such")
+ elif contain_much:
+ index_much = container.index(element)
+ set_much = container.__setitem__(index_much,"much")
+ elif contain_suchMuch:
+ index_suchmuch=container.index(element)
+ set_suchmuch = container.__setitem__(index_suchmuch,"suchmuch")
+ return(container)
+
-def count_doge_words(str1):
- wrdCount = 0
- f = ["much", "such", "so", "lol", "wow", "very"]
- for x in str1.split(" "):
- cont = f.__contains__(x)
- if cont:
- wrdCount += 1
- return(wrdCount)
def main():
- print(count_doge_words("wow much wow wow wow hard such difficult"))
- print(count_doge_words("wow much hard such difficult"))
+ print(wow_such_much(1, 16))
if __name__ == '__main__':
- main()
+ main()

Трябва да пейстнеш кода на двете функции, които ти се искат по условие в първата задача, във формата за предаване наведнъж. Ако отидеш на Моето решение, ще видиш какво си предал и това е кодът, върху който изпълняваме тестовете при проверката.

Хубаво е да се съобразиш с препоръките на останалите и да се поразровиш малко повече, за да видиш как може решението ти да се подобри.

Здравейте,

Ще премахна main() функциите от решенията и ненужните.

Надявах се да съм съумял да използвам препоръките на другите, главно на Орлин Христов:bulb:, на който му благодаря супер много, защото ми отвори очите с препоръките си и сякаш кода стана с някоя идея по-добър за моето начално ниво.

Ако може да ми кажете какво по-конкретно не ви харесва, ще се опитам да го дoизкусуря. Благодаря Ви .

Станислав обнови решението на 07.03.2014 17:24 (преди около 10 години)

-# След дадените препоръки.
def wow_such_much(start, end):
container = []
index = 0
while start <= end:
index +=1
start+=1
container.append(index)
count = 0
for element in container:
contain_such = container.__contains__(element%3==0)
contain_much = container.__contains__(element%5==0)
contain_suchMuch =container.__contains__(element%3==0 and element%5==0)
if contain_such:
index_such = container.index(element)
set_such = container.__setitem__(index_such,"such")
elif contain_much:
index_much = container.index(element)
set_much = container.__setitem__(index_much,"much")
elif contain_suchMuch:
index_suchmuch=container.index(element)
set_suchmuch = container.__setitem__(index_suchmuch,"suchmuch")
return(container)
-
-def main():
- print(wow_such_much(1, 16))
+def count_doge_words(str1):
-
+ wrdCount = 0
-if __name__ == '__main__':
+ f = ["much", "such", "so", "lol", "wow", "very"]
- main()
+ for x in str1.split(" "):
+ cont = f.__contains__(x)
+ if cont:
+ wrdCount += 1
+ return(wrdCount)
  • range прави това, което си се опитал да направиш с онзи while
  • Използвай оператора in вместо да използваш __contains__ и =, вместо __setitem__.
  • Обърни внимание, от нашия пример, че дори числата в wow_such_much са стрингове
  • str1, x и f са лоши имена за променливи
  • Нямаш причина да пазиш contain_such, contain_much и contain_suchMuch. Можеш просто да ги вкараш в условието на if-а.

Станислав обнови решението на 11.03.2014 22:12 (преди около 10 години)

def wow_such_much(start, end):
- container = []
- index = 0
- while start <= end:
- index +=1
- start+=1
- container.append(index)
-
- count = 0
- for element in container:
- contain_such = container.__contains__(element%3==0)
- contain_much = container.__contains__(element%5==0)
- contain_suchMuch =container.__contains__(element%3==0 and element%5==0)
- if contain_such:
- index_such = container.index(element)
- set_such = container.__setitem__(index_such,"such")
- elif contain_much:
- index_much = container.index(element)
- set_much = container.__setitem__(index_much,"much")
- elif contain_suchMuch:
- index_suchmuch=container.index(element)
- set_suchmuch = container.__setitem__(index_suchmuch,"suchmuch")
- return(container)
+ doge_array = range(start, end)
+ result = []
+ for element in doge_array:
+ result.append(element)
+ if (element % 3 == 0):
+ replace_element = doge_array.index(element)
+ result[replace_element] = "such"
+ elif (element % 5 == 0):
+ replace_element = doge_array.index(element)
+ result[replace_element] = "much"
+ if element % 3 == 0 and element % 5 == 0:
+ replace_element = doge_array.index(element)
+ result[replace_element] = "suchmuch"
+ return result
-def count_doge_words(str1):
- wrdCount = 0
+def count_doge_words(str):
- f = ["much", "such", "so", "lol", "wow", "very"]
+ word_count = 0
- for x in str1.split(" "):
+ doge_words = ["much", "such", "so", "lol", "wow", "very"]
- cont = f.__contains__(x)
+ for words in str.split(" "):
- if cont:
+ if words in doge_words:
- wrdCount += 1
+ word_count += 1
- return(wrdCount)
+ return word_count