>백엔드 개발 >파이썬 튜토리얼 >초보자가 연습하기에 매우 적합한 3가지 흥미로운 Python 질문

초보자가 연습하기에 매우 적합한 3가지 흥미로운 Python 질문

little bottle
little bottle원래의
2019-04-04 11:09:483567검색

Python을 아는 친구들은 Python이 시작하기 쉽지만 많은 지식이 필요하고 매우 능숙하다는 것을 알고 있습니다! 이러한 기술은 마치 사슬과 같습니다. 숙련되고 지식 포인트를 확실하게 익히려면 약간의 연습이 필요합니다! 오늘 편집자는 여러분을 위해 흥미로운 Python 질문 3개를 선택했습니다. 함께 손가락을 움직여 연습해 보세요!

초보자가 연습하기에 매우 적합한 3가지 흥미로운 Python 질문

다음 편집기는 초보자와 전문가가 각각 문제를 처리하는 방법을 보여줍니다.

NO.1 문자열 문자 교체 in

문자열은 Python에서 가장 기본적이고 중요한 지식 포인트입니다. 다음 질문은 문자열 교체에 관한 것입니다.

입력 문자열을 처리하고 특정 문자가 대체된 문자열을 반환하는 함수를 만듭니다.

· 문자가 대문자인 경우 이 문자를 바꿉니다. "철"로.

· 문자가 소문자이거나 알파벳이 아닌 문자인 경우 해당 문자에 대해 아무것도 수행하지 않음

· 문자가 대문자 모음인 경우 아무것도 수행하지 않음 이 캐릭터는 "Iron Yard"로 대체됩니다.

· 문자가 소문자 모음인 경우 문자를 "Yard"로 바꿉니다.

테스트 사례

입력: "Hello WORLD!"

출력: "IronYardllYard IronIron YardIronIronIron!"

rookie 해결책:

def replace_str(string):
	res = ""
	vowel = 'aeiou'
	for i in string:
		if i in vowel:
			res += 'Yard'
		elif i in vowel.upper():
			res += 'Iron Yard'
		elif i.isupper():
			res +='Iron'
		else:
			res += i
	return res

print(replace_str('Hello WORLD!'))

마스터의 해결책:

def tiy_fizz_buzz(s):
   return "".join(("Iron "*c.isupper() + "Yard"*(c.lower() in "aeiou")).strip() or c for c in s)

댓글:

전문가를 위한 가장 독창적인 해결책은 목록에 푸시하는 것과 같은 방법을 사용하지 않는 것입니다. 루프 문자열의 문자를 처리하려면 "Iron"*True 또는 "Iron"*False를 매우 영리하게 사용하세요. 전자라면 문자열 자체가 되고 후자는 빈 ""이 됩니다. 그런 다음 +를 사용하여 두 문자열을 결합한 다음 또는를 사용하여 분류하세요! 위의 if-elif-elif-else를 한 줄의 코드로 완벽하게 통합했는데, 정말 좋습니다!

NO.2 흥미로운 체중 순위

초보자가 연습하기에 매우 적합한 3가지 흥미로운 Python 질문

샤오리는 매달 '체중 감량 클럽'에 있습니다 매월 말에 Xiaoli는 회원 체중 목록이 매달 발표되고 매달 목록의 마지막 사람이 되어 가장 무거웠기 때문에 매우 걱정했습니다. 그래서 그녀는 대통령에게 규칙을 수정하라고 제안했습니다. 예를 들어, 새로운 규칙은 다음과 같습니다.

새 정렬 규칙은 "무게"에 따라 정렬하는 것입니다. 가중치 문자열에 따라 정렬됩니다. (무게 계산 규칙: 체중 숫자의 각 자리 숫자의 합)

특정 일반 순서 클럽 회원의 가중치 문자열이 주어지면 새로운 규칙에 따라 정렬하는 방법 ? 테스트 케이스: 입력: "99 189 86 75" 출력: "75 86 189 99"

신입 솔루션:

def order_weight(string):
    weight_list = string.split(' ')
    def helper(x):
        if not x:
            return x
            y = int(x)
            z = 0
            while y:
                z += y % 10
                Y = int(y / 10)
            return (z,x)
 
    weight_list.sort.sort(key = helper)
    return " ".join(weight_list)

마스터 솔루션:

def order_weight(_str):
    return' '.join(sortsd(_str.split(' '),key = lambda x: sum(int(c) for c in x)))

댓글:

전문가의 솔루션도 비교적 간단합니다! 우리 대부분은 x에서 c를 사용하고 이를 이 수준에서 종료합니다. 실제로 c에 대해 추가 작업을 수행한 다음 이를 요약할 수도 있습니다. sorted의 다양한 고급 사용법을 간결하고 효과적으로 한 번에 모아봤습니다!

3. 주사위 던지기 게임

5개의 6면체 주사위를 던질 때마다 5개의 숫자 배열이 나타나는 주사위 게임입니다. -6) 배열에 각 숫자가 나타나는 횟수를 세고, 각 숫자가 나타나는 횟수를 3번과 1번의 조합으로 나누어 다음의 규칙에 따라 센다. 참고: 발생 횟수가 3회 이상인 경우 적어도 하나는 3회로 계산되어야 하며, 모두 1회로 계산될 수는 없습니다

#🎜 🎜#3회 1 = = 1000포인트 3회 6 = = 600포인트

3회 5 = = 500포인트 3회 4 = = 400포인트

3회 3 = = 300포인트 3회 2 = = 200포인트 # 🎜🎜#

1회 1 => 100포인트 1회 5 => 50포인트

1회 2 => 시간 3 => 0점 #🎜🎜 #

1 시간 4 => 0점 1회 6 => 0점

예를 들어 5가 5번 나타나면 3 5s, 1 5 및 1 5는 점수 계산에 사용되며, 5가 6번 나타나면 3 5s 및 3 5s를 사용하여 점수를 계산해야 하며 다른 숫자에도 동일하게 적용됩니다.

테스트 사례:

주사위를 던져 점수 계산

5 1 3 4 1 50 + 2 * 100 = 250

#🎜🎜 #1 1 1 3 1 1000 + 100 = 1100

2 4 4 5 4 400 + 50 = 450

루키 솔루션: #🎜🎜 #
from collections import Counter
def score(dice):
    num_dict = dict(Counter(dice))
    res = 0
    for i in num_dict:
        if i == 1:
            res +=1000 * (int(num_dict[i] / 3)) + 100 * (num_dict[i] % 3)
            elif i == 5:
                res +=500 * (int(num_dict[i])) + 50 * (num_dict[i] % 3)
            else:
                res += 100 * (i * int(num_dict[i] / 3))
    return res
# 🎜🎜#위대한 신의 해결책:

def score(dice):
        sum = 0 
        counter = [0,0,0,0,0,0]
        points = [1000, 200, 300, 400, 500, 600]
        extra = [100,0,0,0,50,0]
        for die in dice:
            counter[die-1] += 1
        for (i, count) in enumerate(counter):
            sum += (points[i] if count >= 3 else 0) + extra[i] * (count%3)
        return sum

댓글:

위대한 신의 해결책은 설계된 데이터 구조가 매우 영리하고 여러 컨테이너가 미리 설계되어 있다는 것입니다. 질문의 의미에 따라 카운터 목록은 (1-6)을 (1-6)의 발생 횟수와 교묘하게 연관시킵니다. 포인트와 추가 목록은 숫자가 나타나는 횟수(3회 및 1회)를 점수와 교묘하게 연결하여 실수로 점수를 입력할 가능성을 줄이고 코드 재사용을 향상시킵니다.

위의 질문은 매우 간단하고 이해하기 쉬운 것 같지만 해결책은 다른 질문만큼 간결하고 독창적이지 않습니다! 요리 대회처럼 간단해 보이는 계란 볶음밥도 실제로 실력을 시험하는 대회입니다! 프로그래밍 자체에는 알고리즘 + 데이터 구조의 융합이 포함됩니다. 시간이 있으면 우수한 코드에 대해 더 많이 배울 수 있으며 이는 학습과 향상에 큰 도움이 될 것입니다!

【추천 강좌: Python 컬럼 동영상 튜토리얼


위 내용은 초보자가 연습하기에 매우 적합한 3가지 흥미로운 Python 질문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.