목표는 사용자의 단락에서 목록을 작성하고 반복하여 특수 문자 “j, x, q, z”를 포함하는 단어 수를 셀 수 있습니다.
입력 예 :
땅에있는 구멍에 호빗이있었습니다. 불결하고 더럽고 젖은 구멍이 아니며 벌레의 끝과 oozy 한 냄새로 가득 차 있지 않으며 아직 앉아 있거나 먹을 모래가없는 마른 모래 알 구멍이 없습니다. 그것은 호빗 구멍이었고, 그것은 위로를 의미합니다.
예제 출력 :
희귀 문자가있는 1 워드
사용자 단락을 목록으로 나누는 코드를 시작했지만 목록을 반복하고 특수 문자의 각 인스턴스를 찾는 데 어려움을 겪고 있습니다.
이것이 내가 지금까지 가진 것입니다.
def rareChar(words):
rareWords = 0
rareChars = ['j', 'x', 'q', 'z']
for astring in words:
wds = words.split()
for char in wds:
if char in rareChars:
rareWords = rareWords + 1
return rareWords
def CoolPara(words):
print(rareChar(words), 'word(s) with a rare character')
# DO NOT CHANGE CODE BELOW
print(CoolPara(input("Enter: ")))
예제 입력으로 실행하면 ‘0 개의 희귀 문자가있는 단어’가 출력됩니다. 예상 출력을 얻을 수 있도록 어떻게 해결할 수 있습니까? 코딩에 익숙하지 않아 도움을 주시면 감사하겠습니다.
또한 빠른 참고 사항 : split () 및 Len ()의 메소드 / 함수 만 사용할 수 있습니다
답변
어쩌면 이것은 파이썬 기능을 소개 할 수있는 기회 일 수 있습니다.
from typing import List
def rare_char(sentence: str, rare_chars: List[str]=["j", "x", "q", "z"]) -> List[str]:
return [word for word in sentence.split() if
any(char in word for char in rare_chars)]
def cool_para(sentence: str) -> str:
return f"{len(rare_char(sentence))} word(s) with rare characters"
이 답변은 다음을 사용합니다.
- 타이핑 은 타입 체커, IDE, 린터와 같은 타사 도구에서 사용할 수 있지만 더 중요한 것은 코드를 읽는 다른 사람들에게 의도를 분명히하는 것입니다.
- 함수 내에서 하드 코딩하는 대신 기본 인수 . 사용자가 결과에 놀라지 않도록 함수를 문서화하는 것이 매우 중요합니다 ( 최소한의 놀람 원리 참조 ). 물론 코드를 문서화하는 다른 방법 ( docstrings 참조 ) 및 해당 인터페이스를 디자인하는 다른 방법 ( 예 : 클래스 일 수 있음 )이 있지만 이는 요점을 보여주기위한 것입니다.
- 이해력을 나열 하십시오 . 명령 식이 아니라 보다 선언적으로 코드 가독성을 높일 수 있습니다. 명령형 알고리즘의 의도를 결정하는 것은 어려울 수 있습니다.
- 내 경험상 연결보다 오류가 덜 발생하는 문자열 보간 .
- 나는 pep8 스타일 가이드를 사용하여 파이썬 세계에서 가장 일반적인 관례 인 함수의 이름을 지정했습니다.
- 마지막으로 주석 대신 코드 아래 에서 함수 호출의 결과를 인쇄 하기 때문에 인쇄하는 대신 함수
str
에서 a 를 반환했습니다 .cool_para
# DO NOT CHANGE CODE BELOW
답변
이상적으로는 목록 이해를 사용하고 싶습니다.
def CoolPara(letters):
new = [i for i in text.split()]
found = [i for i in new if letters in i]
print(new) # Optional
print('Word Count: ', len(new), '\nSpecial letter words: ', found, '\nOccurences: ', len(found))
CoolPara('f') # Pass your special characters through here
이것은 당신에게 제공합니다 :
['In', 'a', 'hole', 'in', 'the', 'ground', 'there', 'lived', 'a', 'hobbit.', 'Not',
'a', 'nasty,', 'dirty,', 'wet', 'hole,', 'filled', 'with', 'the', 'ends', 'of',
'worms', 'and', 'an', 'oozy', 'smell,', 'no', 'yet', 'a', 'dry,', 'bare,', 'sandy',
'hole', 'with', 'nothing', 'in', 'it', 'to', 'sit', 'down', 'on', 'or', 'to', 'eat;',
'it', 'was', 'a', 'hobbit-hole,', 'and', 'that', 'means', 'comfort']
Word Count: 52
Special letter words: ['filled', 'of', 'comfort']
Occurences: 3
답변
def rareChar(words):
rareWords = 0
rareChars = ['j', 'x', 'q', 'z']
#Split paragraph into words
words.split()
for word in words:
#Split words into characters
chars = word.split()
for char in chars:
if char in rareChars:
rareWords = rareWords + 1
return rareWords
def CoolPara(words):
#return value rather than printing
return '{} word(s) with a rare character'.format(rareChar(words))
# DO NOT CHANGE CODE BELOW
print(CoolPara(input("Enter: ")))
입력 : 안녕하세요, 동물원에 관한 문장입니다.
출력 : 희귀 문자가있는 단어 1 개
답변
다음 코드는 귀하의 코드를 수정 한 것입니다. 1
def main():
def rareChar(words):
rareWords = 0
rareChars = ['j', 'x', 'q', 'z']
all_words = list(words.split())
for a_word in all_words:
for char in a_word:
if char in rareChars:
rareWords = rareWords + 1
return rareWords
def CoolPara(words):
print(rareChar(words), 'word(s) with a rare character')
# DO NOT CHANGE CODE BELOW
print(CoolPara(input("Enter: ")))
main()
대답:
C:\Users\Jerry\Desktop>python Scraper.py
Enter: In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, no yet a dry, bare, sandy hole with nothing in it to sit down on or to eat; it was a hobbit-hole, and that means comfort.
1 word(s) with a rare character
답변
이 코드는 당신을 위해 작동합니다. 입력 한 단어의 주석을 지우고 코드를 테스트하는 데 사용한 단어 문자열 문을 주목하십시오.
파라 방법은 필요하지 않습니다.
def rareChar(words):
rareWords = 0
rareChars = ['j', 'x', 'q', 'z']
for word in words:
wds = word.split()
for char in wds:
if char in rareChars:
rareWords = rareWords + 1
return rareWords
words = 'john xray quebec zulu'
# words = (input("Enter: "))
x = rareChar(words)
print(f"There are {x} word(s) with a rare character")
답변
Barb이 제공하는 솔루션은 단일 문자로 작동합니다.
쿨 파라 ( ‘f’)
그러나 원래 포스터의 요청에 따라 여러 문자로 작동하지 않습니다. 예를 들어 올바른 결과를 반환하지 않습니다.
CoolPara ( “jxqz”)
다음은 약간 개선 된 Barb 솔루션 버전입니다.
def CoolPara(letters):
new = [i for i in text.split()]
found = list()
for i in new:
for x in i:
for l in letters:
if x == l:
found.append(i)
print("Special letter words: ", found)
print("word(s) with rare characters ", len(found))