2017-09-06 10 views
0

죄송합니다. 실제로 어디서부터 시작해야할지 모릅니다. 필자는 파이썬을 처음 접했고 지난 몇 년 동안 프로그래밍을 시도한 이후로 여러 해가되었습니다. 나는 결코 경험이 많지 않았다. 나는이 파이썬 과정을 온라인으로 따르고 있으며 운동에 막 다른 길을 걸었다. 앞의 예에서 벗어나고 있습니다.파이썬 엑사스 문제 - 순서대로 숫자로 문자 변환 (ord 및 chr 사용)

x = int(input()) 
if x>=1 and x<=26: 
    print('letter', x, 'in the alphabet:', chr(ord('A')+(x-1))) 
else: 
    print('invalid input:', x) 

이 예제 프로그램은 숫자를 문자로 변환합니다. 그래서 'A'= 1이고 'B'= 2입니다. 이제는 저와 같은 프로그램을 만들고 싶습니다. 나는이 라인부터 시작 하죠 : 위의 예제의 역을 수행하는 프로그램을 작성 26 편지 : 운동을 코딩

: 그것은 문자를해야

다음
letter = input() 

이 운동을 설명 무엇인가 해당 숫자 (1에서 26 사이)를 입력 및 출력합니다. 프로그램은 대문자 만 받아 들여야합니다. 오류 검사로 입력이 대문자가 아닐 경우 인쇄되지 않습니다.

이제이 작업을 수행 할 수는 있지만 수행 할 방법이나 원하는 방식이 아닙니다. 다음과 같이 할 수 있습니다 :

if letter == 'A': 
    letter = int(1) 
    print(letter) 
elif letter == 'B': 
    letter = int(2) 
    print(letter) 

물론 길고 엉성한 것입니다. 누구든지 나에게 충고가 있니? 이 하나가 붙어있다. 미안 해요, 아마 이것이 아주 간단하다는 것을 압니다. 이것은 제가해야 할 일보다 훨씬 더 복잡하게 보입니다. 이 문제를 조사해 보았지만 온라인에서 발견 한 모든 내용이이 코드에 구현하는 방법을 이해할 수 없을 정도로 충분히 다릅니다. 솔직하게 chr 및 ord 재료는 나를 크게 혼란스럽게합니다. 이 책을 읽는 데 충분히 오래 걸린 사람이라면 고맙게 생각합니다. 고맙습니다. 나는 이걸로 무엇을해야할지 모르겠다. 또한, 여기에 아무것도 게시하지 않아서 처음입니다. 그래서 내가 실수하거나 잘못하면, 사과 드리며 가능한 한 빨리 삭제/편집 할 것입니다.

문제

는 여기에서 찾을 수 있습니다 : https://cscircles.cemc.uwaterloo.ca/9-else-and-or-not/

약간의 정보를 추가. CScircles는 0 대신 A = 1을 요구합니다. 빠른 답장을 보내 주셔서 감사합니다. 나는이 일을 나중에 나중에 다시 할 것입니다.

+1

사용'ord' 후, 문자의 숫자 값을 얻기 위해 "A"의 코드가 0이되도록 숫자를 뺍니다. 'ord'는 당신을 혼란스럽게합니까? – Carcigenicate

답변

1

이전 연습에서 사용한 문자의 문자 번호를 얻으려면 ord 함수를 다시 사용해야합니다. 그런 다음 문자 A의 char 값을 빼서 126 사이의 값을 가져올 수 있습니다.

inp = input() 
if (len(inp) > 1 or inp != inp.upper()): 
    print("invalid input") 
else: 
    print(ord(inp)-ord("A")+1) 

ord(x) 함수 x 문자 (예를 들어, 어떤 UTF8 문자)를 받아 정수를 반환한다. 이 정수 값은 인코딩 테이블의 문자 수를 나타냅니다. 아래 테이블 ascii을 살펴 보겠습니다. 여기에 char 값과 문자의 dec/int 값이 표시됩니다. 예를 들어 문자 Aint65 등으로 표시됩니다.

chr(x) 기능은 반대를하고있다 : 그것은 int 값을 받아 이것에 의해 표현되는 char를 반환,이 의미

ord("A") = 65 
chr(65) = "A" 
chr(ord(anyCharacter)) = anyCharacter