2010-03-13 3 views
4

저는 1 학년 수학 학생에게 "컴퓨터 프로그래밍 개론"과정을 가르치고 있습니다. 학생들이 컴퓨터 프로그래밍에 처음 노출 된 것으로 가정해야합니다. 내 강의의 주요 목표는 다음과 같습니다.초보자가 파이썬에서 문자열을 뒤집어 가르치는 방법?

  • 학생들은 파이썬의 기초를 배우고 이해해야합니다.
  • 궁극적으로 주어진 문제에 맞는 도구를 선택할 수 있도록 충분히 많은 Python 도구를 마스터해야합니다.
  • 동시에 컴퓨터 프로그래밍을 통해 문제 해결의 기본 기술을 배워야합니다.

내 가르침 방법은 새로 도입 된 개념마다 학생들에게 동기 부여하는 일련의 문제와 티저를 제공하는 것입니다. 예를 들어, 문자열 및 목록을 소개 할 때 자연스러운 질문은 문자열 또는 목록 반전의 작업입니다. 학생들에게 문자열이 회문인지 여부를 확인하는 코드를 작성하도록 요청하면 역 분개하는 방법을 더 잘 알려줍니다. 목록에 대한

, 적어도 두 가지 단점이있다 myString.reverse() 자연 솔루션 :

  1. 그것은 문자열로 이월하지 않습니다.
  2. 방법에 대해 처음 언급하지 않는 한 학생들은 마법을 보게됩니다.

진짜 질문은 : 어떻게 파이썬에서 문자열을 뒤집는 문제를 소개해야합니까?

+1

'myString [:: - 1]'을 사용하는 것은 어렵습니다. – poke

+5

당신이 사용하려고 생각하는 자료를 제공하십시오. 이것은 파이썬에서 사소한 기능이며 어떠한 "가르침"도 필요로하지 않습니다. 벌써 도서관에 있어요. 너는 무엇을 가르치려고하는거야? 알고리즘? 데이터 구조? 도서관에서 검색하는 방법? Google을 사용하지 않으려면 어떻게해야하나요? 귀하의 질문에 더 많은 배경을 제공해주십시오. –

+0

나는 그것을 할 수는 있지만, 그들은 다른 트릭을 이해하거나 방금 배울 것인가? –

답변

7

스트라이드 표기법 (::)을 먼저 가르친 다음 을 자르고을 적용하고 둘 다 적용 할 수 있습니다.

s = 'string' 
s = s[::-1] 
print s # gnirts 

참조 및 추가 정보 :

귀하의 코멘트에 응답에서, 당신도 인수를 제공 할 수 있습니다.

>>> s[len(s):None:-1] 
'gnirts' 
>>> s[5:None:-1] 
'gnirts' 
>>> s[::-1] # and of course 
'gnirts' 
+0

s = s [a : b : -1] 문에 a 및 b에 대한 다양한 값을 연결했지만 s = s [:: - 1]과 같은 효과를 얻을 수 없습니다. –

+0

'a'와'b'에 어떤 값을 사용합니까? –

+0

동일한 결과를 재현 할 'a'와 'b'값을 통합하여 내 대답을 편집했습니다. 도움이 되길 바랍니다. –

4

두 가지 분명한 방법은 다음과 같습니다

''.join(reversed(s)) 

s[::-1] 

나는 모두 프로그래밍 초보자를위한 사소하지 않은 생각

하지만, 관련된 개념은 정말 어렵지 않다.

두 번째 방법은 s[::3], s[::2]s[::1]의 결과가 무엇인지 보여주기 시작하면 이해하기 쉽습니다. 그런 다음 s[::-1] 자연스럽게 올 것이다 :)

+0

매우 좋습니다! 첫 번째 솔루션은 설명하기가 더 어렵습니까? –

1

는 반전을 달성하기 위해 (특히, 배열 슬라이싱 아마도 기능적인 스타일의 재귀) 충분한 도구를 소개합니다. 그런 다음 한동안 알아 내려고 애 쓰지 않도록하십시오. 몇 가지 다른 대답을 취해 비교해보고 각 방법의 장단점을 보여줍니다.

2

절대적인 초보자 가이드는 파이썬에서 문자열 반전을합니다. ;)

그러나 이것은 파이썬으로 간주되지 않으며 나는 다른 사람들이 이미 게시 한 더 나은 방법을 선호합니다.

이유

>>> 'dammitimmad'[::-1] == 'dammitimmad' 
True 

하지만

>>> 'dammit im mad'[::-1] == 'dammit im mad' 
False 

:

+2

나는 이것에 동의합니다. 파이썬을 사용하여 기본 프로그래밍 개념을 가르치려는 경우 먼저 비 최적의 방법으로 먼저 실행하십시오. 그런 다음 이론을 이해하면 "지름길"을 보여줄 수 있습니다. (수학 선생님들처럼 항상 그렇습니까?저를 화나게 한 사람 :) 학생들이 이미 기본 프로그래밍 기술을 가지고 있고 특별히 파이썬을 가르치고 싶다면 슬라이싱 방법을 사용하여 일반적으로 슬라이스를 검토하고이를 얼마나 강력하게 할 수 있는지 확인하십시오. 있다. – Toji

+0

첫 번째 방법으로 불량 코드를 표시하지 마십시오. –

+0

@Mike Graham : 시작하기 전에 모든 관심을 잃어 버리는 코드 sooo를 제시하십시오. 저는 비단뱀 강점에 대해 많이 알고 있지만 OP는 "컴퓨터 프로그래밍 개론"을 가르치고 있다고 말했습니다. –

3

그냥 그들에게 이런 수수께끼를 물어?

관련 문제