Opus (오푸스, 오디오 포맷)

          공식 홈페이지: https://www.opus-codec.org/


오푸스(Opus)는 국제 인터넷 표준화 기구(IETF)가 개발한 손실 오디오 압축 포맷이며, 특히 인터넷 상의 인터렉티브 실시간 응용 프로그램에 적합하게 만들어졌다. 

RFC 6716으로 표준화된 오픈 포맷으로서, 참조 구현이 3절 BSD 라이선스 하에 제공된다. 오푸스를 포함하는 모든 알려진 소프트웨어 특허는 무로열티 조건 하에 허가되어 있다. 

오푸스는 음성지향 SILK와 저지연 CELT 두가지 코덱의 기술을 포함하고있다. 오푸스는 높은 비트 레이트와 낮은 비트 레이트에 모두 매끄럽게 적용될 수 있다. 내부적으로 낮은 비트레이트의 선형 예측 코덱과 높은 비트레이트의 변형 코덱의 사이를 전환한다. 

오푸스는, 자연스러운 대화와 네트워크 음악 공연 혹은 립싱크를 가능하게 하는 낮은 오디오 지연시간 의사소통 연결의 부분으로서의 사용을 위해 필수적인, 아주 낮은 알고리즘 지연시간(기본 22.5 ms)을 갖고 있다. 오푸스는 5 ms 이하의 더 작은 알고리즘 지연시간을 달성하기 위해 품질 및 비트 레이트의 균형을 맞추는 것을 허용한다.현재까지는 5ms까지로 지연시간을 줄일 수 있다.

(출처: ko.wikipedia.org)



가능한 비트레이트, 지연 결합에 대한, 다른 코덱들과의 비교



(출처: ko.wikipedia.org)



다른 오디오 형식들과 Opus 간의 효율성 비교

(Comparison of coding efficiency between Opus and other popular audio formats)


(출처: https://en.wikipedia.org/wiki/Opus_(audio_format))


아래 싸이트에 OPUS 관련 내용이 잘 정리 되어 있습니다.


https://namu.wiki/w/Opus


반응형

'오디오 음성' 카테고리의 다른 글

마이크 감도(Sensitivity), EIN (Equivalent Input Noise)  (0) 2015.09.01
24 Bit PCM을 16 Bit PCM으로 변환하기  (0) 2015.08.12
24 Bit vs 16 Bit PCM  (0) 2015.08.11
Orthography (맞춤법, 철자법)  (0) 2015.08.05
Phoneme (음소)  (0) 2015.08.05

24 Bit vs 16 Bit PCM



Understanding bit depth

Bit depth determines dynamic range. When a sound wave is sampled, each sample is assigned the amplitude value closest to the original wave’s amplitude. Higher bit depth provides more possible amplitude values, producing greater dynamic range, a lower noise floor, and higher fidelity.

For the best audio quality, Audition transforms all audio in 32‑bit mode and then converts to a specified bit depth when saving files.

 Bit depth

 Quality level

 Amplitude values

 Dynamic range

 8‑bit

 Telephony

 256

 48 dB

 16‑bit

 Audio CD

 65,536

 96 dB

 24‑bit

 Audio DVD

 16,777,216

 144 dB

 32‑bit

 Best

 4,294,967,296

 192 dB

Higher bit depths provide greater dynamic range.


LINN 오디오 설치 네트워크 오디오 구축 - 스트리밍 하이파이 CD리핑 PC-FI 구축 FLAC 마스터링 음원 재생 24Bit-192kHz HDtrac 재생기계

80년대 초 소니와 필립스의 합작으로 CD 라는 재생매체가 처음 발표할때 많은 오디오애호가 들은 CD의 보급을 회의적으로 생각을 했습니다. 
하이파이 오디오에서 디지털이라는 새로운 매체의 생소함과 디지털 CD의 한계에 대해 많은 이야기 하였지만, LP와 다르게 깨끗한 음질과 사용하기 편리한 방법등으로 30년간 음원시장을 장악하게 되었습니다.

이러한 디지털 음원 시장에서 가장 큰 불만은 바로 음질 이었습니다. MP3 는 과도한 압축으로 인하여 일반 CD에 비해서도 현저히 떨어지는 음질을 들여주고 있습니다. 
이러한 저음질 음원으로 인하여 순수 음악 감상을 좋아하는 오디오유저들의 입장에서 CD를 대체 할만한 대안이 없었습니다. 이러한 디지털 음원시장에 한줄기 빛이 되어준것이 바로 FLAC 포멧 입니다. FLAC(Free Lossless Audio Codec) 은 무료 무손실 오디오 코덱의 약자 입니다.

CD가 처음 개발되었을당시 CD한장은 음원의 최대 녹음시간은 74분 이었습니다. 74분으로 정한 이유는 베토벤의 교향곡 을 담을수 있는 시간으로 정하였습니다.
하지만 이러한 시간때문에 당시에도 녹음가능하던 96kHz 나 고음질이 아닌 다운 샘풀링을 통하여 16bit / 44.1kHz PCM 이라는 포멧으로 용량을 줄여 CD 에 담기 시작하였고 이것이 지금것 일반적인 CD 포멧인 16Bit / 44.1kHz 라는 표준이 되었습니다.

하지만 더이상 CD 라는 포멧을 사용할 필요가 없는 지금 24Bit / 192kHz로 대표되는 고음질 마스터링음원 (HDtracks) 의 FLAC 파일들이 속속 오디오유저들의 마음을 사로잡고 있습니다.


24-Bit vs. 16-Bit Audio Test - Part II: RESULTS & CONCLUSIONS

In a naturalistic survey of 140 respondents using high quality musical samples sourced from high-resolution 24/96 digital audio collected over 2 months, there was no evidence that 24-bit audio could be appreciably differentiated from the same music dithered down to 16-bits using a basic algorithm (Adobe Audition 3, flat triangular dither, 0.5 bits).


테크니컬 컬럼 #2 - 24 Bit / 192 KHz 는 반드시 음질이 좋을까요?



최근 여러 음원 사이트들이 “고음질 음원” 서비스를 본격화하기 시작하면서, 일반 대중들도 “24 Bit / 192 KHz 음원이라 소리가 좋다!” 라는 문구를 자주 접하게 되었습니다. 막연하게만 생각하면 “16 Bit / 44.1 KHz 인 CD 보다 숫자가 높으니 당연히 소리가 좋다.” 라고 생각할 수 있겠지만, 과연 높은 Bit 와 Sample Rate 가 “좋은 음질” 을 보장할 수 있는 것일까요?

<중략>

결론적으로, 24 Bit / 192 KHz 의 음원은 이론상 분명 더 정확한 데이터를 표현할 수 있지만, 결코 “모든 상황에서 절대적으로” 고음질을 보장할 수는 없습니다.


반응형

'오디오 음성' 카테고리의 다른 글

24 Bit PCM을 16 Bit PCM으로 변환하기  (0) 2015.08.12
Opus (오푸스, 오디오 포맷)  (0) 2015.08.12
Orthography (맞춤법, 철자법)  (0) 2015.08.05
Phoneme (음소)  (0) 2015.08.05
Grapheme (문자소)  (0) 2015.08.05

금강자연휴양림 입장료 한시적 면제 알림


충청남도산림환경연구소 홈페이지에 다음과 같은 공지 게시되었습니다. 


「광복 70주년 국민사기 진작방안(국무조정실 안건)」의 일환으로 중동 호홉기 증후군(MERS) 발생 여파로 위축된 여행심리 및 지역관광수요 침체에 대응 국내관광 활성화를 위해 다음과 같이 한시적 무료입장을 실시합니다.


대 상 : 금강자연휴양림 입장료 (단 주차료 등 시설사용료는 징수)

기 간 : 2015. 8. 14. ~ 2015. 8. 16


반응형

Orthography (맞춤법, 철자법)


An orthography is a set of conventions for how to write a language. It includes rules of spellinghyphenationcapitalizationword breaksemphasis, and punctuation.


[출처: en.wikipedia.org] 


Orthography는 언어를 기록하는 규약들. spelling, 대소문자, 구두법등이 포함된다.

반응형

'오디오 음성' 카테고리의 다른 글

Opus (오푸스, 오디오 포맷)  (0) 2015.08.12
24 Bit vs 16 Bit PCM  (0) 2015.08.11
Phoneme (음소)  (0) 2015.08.05
Grapheme (문자소)  (0) 2015.08.05
Wave 파일 포맷  (0) 2015.07.14

Phoneme (음소)


phoneme /ˈfnm/ is a basic unit of a language's phonology, which is combined with other phonemes to form meaningful units, morphemes. The phoneme can be described as "The smallest contrastive linguistic unit which may bring about a change of meaning". In this way the difference in meaning between the English words kill and kiss is a result of the exchange of the phoneme /l/ for the phoneme /s/. Two words that differ in meaning through a contrast of a single phoneme form a minimal pair.


[출처: en.wikipedia.org]


의미의 변화를 가져올 수 있는 가장 작은 대조 언어학 단위. 

예를 들어, kill과 kiss는 /l/과 /s/의 차이로 두 단어의 의미가 달라지는 경우이다.

반응형

'오디오 음성' 카테고리의 다른 글

24 Bit vs 16 Bit PCM  (0) 2015.08.11
Orthography (맞춤법, 철자법)  (0) 2015.08.05
Grapheme (문자소)  (0) 2015.08.05
Wave 파일 포맷  (0) 2015.07.14
파스칼 (단위)  (0) 2015.07.09

Grapheme (문자소)


grapheme is the smallest unit used in describing the writing system of a language, originally coined by analogy with the phoneme of spoken languages. A grapheme may or may not carry meaning by itself, and may or may not correspond to a single phoneme. Graphemes include alphabetic letterstypographic ligaturesChinese charactersnumerical digits,punctuation marks, and other individual symbols of any of the world's writing systems.


[출처: en.wikipedia.org]


Spoken languages에서의 phoneme (음소) 처럼, writing system에서 기술하기 위해서 사용되어지는 최소 단위.

반응형

'오디오 음성' 카테고리의 다른 글

Orthography (맞춤법, 철자법)  (0) 2015.08.05
Phoneme (음소)  (0) 2015.08.05
Wave 파일 포맷  (0) 2015.07.14
파스칼 (단위)  (0) 2015.07.09
롬바드 효과 (Lombard Effect)  (0) 2015.06.18
“14일 임시공휴일 공무원만 쉬는 날이다? 틀린 말!”

브레이크뉴스 문흥수 기자= 정부가 광복 70주년 기념 임시공휴일 지정을 확정함에 따라, 오는 14일은 모든 관공서가 휴무하게 된다. 

민간기업의 경우 14일 임시공휴일을 지킬지 여부는 자율결정 사안이나, 휴무하지 않고 근무시에는 통상임금의 150%를 추가 지급해야 할 것으로 전망된다. 

임시공휴일은 '법정공휴일'이기 때문에, 흔히 달력에 표시된 '빨간날'과 똑같이 취급해야 된다는 것. 또 ‘관공서가 휴무하는 날’이기 때문에 민간 기업에 직접 적용되지는 않으나, 대다수의 기업들이 근로계약과 회사 사규에서 ‘법정공휴일’로 규정하고 있는 만큼 사실상 휴일로 보장해야 한다는 설명이다.

(출처: http://www.breaknews.com)

[전체 기사 보기]


그래서, 저희 회사 사규를 찾아 보았습니다.


제 18 조 (휴일)

3. 기타: 정부가 공휴일로 지정한 날. 다만, 변경이 있을 때에는 그에 따른다.


저희 회사도 대다수의 기업에 속하는 군요. ^^

회사에서 14일은 쉬는 날로 지정되었는 공지 메일을 배포했네요... ㅋㅋㅋ



반응형

잠실 오모리 푸드시스템


이곳은 오모리 찌개가 유명한 집이라고 합니다. 

그리고, 수타면으로 옛날 짜장하는 집으로도 유명합니다.


옛날 짜장을 주문해서 먹어 보았는데요. 단맛이 좀 약하고 짠맛이 다소 강했습니다.

수타면이라서 다소 일정하지 하지 않은 면발이 재미있는 식감을 연출하는 것 같아서 좋았습니다. 예전에 여기서 칼국수를 맛있게 먹었던 기억이 있는데요. 다음에는 짜장면보다는 칼국수를 먹어야 겠다는 생각이 들었습니다.  






오모리 겉절이 김치를 판매하네요...



후식(?)으로 맛있는 숭늉을 제공하고 있어요... 친환경 이중 항아리 가마솥을 사용하신다는 군요. ^^

이런 것으로도 특허는 내나보네요... ㅋㅋㅋ




오모리찌개를 먹으려면 2층으로 올라가야만 하는 불편함이 있습니다.

오모리찌개가 유명한 집인데, 몇 번을 방문했음에도 불구하고 2층에 올라기 귀찮아서 찌개는 한번도 먹어 보지 못했네요. ㅠㅠ


사진은 화장실 가는 길에 찍었어요. 남자 화장실은 3층에 있더라구요. 에효~~~




[위치 정보]


반응형

롯데월드 드림보드와 드래곤 트래인


롯데월드에 아이들을 위한 새로운 놀이기구가 생겼어요.

드림보드는 미니 후룸라이드라고 생각하시면 됩니다. 

2인용이라서 3명이서 가시면, 2명 / 1명 따로 타야만 합니다. 

그래서 저는 혼자 탔습니다. ㅠㅠ 

아이들 용이라서 어른에게는 크게 재미있지는 않아요.

아이들과 함께온 가족들이 엄청 줄을 서 있어서 30분이상 줄을 섰어요.

















바로 옆에 드래곤 트래인이라는 것도 생겼어요.

미니 기차이에요. 운행 중간에 포토 타임도 있어요.








반응형

[맥주] 중국 칭따오 맥주와 일본 시아와세 버터 포테이토칩


오늘 집 주면에 하나로 마트에 갔다가...

중국 칭따오 맥주를 발견했습니다. 예전에 중국 출장 갔을 때 참 많이 먹었었는데...

반가운 마음에 한 캔 샀습니다. 그리고, 일본 시아와세 버터 포테이토칩도 같이 샀습니다. 마지막으로는 제가 요즘 가장 즐겨 먹는 Kloud 맥주도 사고...


본의 아니게 한중일 합작... ^^



칭따오 가격이 2050으로 되어 있네요. 하지만, 나중에 영수증을 보니 2000원으로 계산되었더군요.







클라우드 500ml랑 칭따오 330ml가 가격이 엇비슷하네요.



칭따오 맥주에도 종류가 엄청 많겠지만, 옛날 중국 출장가서는 여러가지 종류별로 먹어 봤던 기억이 새록새록... ^^ 

우리동네 하나로 마트에서 파는 칭따오 맥주는 4.7도짜리 이네요.

4.7도임에도 불구하고 약간 싱거운 듯한 느낌이네요.



일본 시아와세 버터 포테이토칩은 단맛보다는 짠맛이 강하네요.

우리 나라의 허니 버터 과자들은 대부분 짠맛보다는 단맛이 강한데...


아무튼 제 입에는 좀 짜기는 한데, 약간 싱거운 칭따오 맥주랑 같이 먹으니깐...

잘 어울리는 듯하네요. ^^


마지막에는 Kloud로 마무리를 했습니다. 약간의 쌉싸름한 맛이 크... 좋다...




반응형

세종시 맛집 금아화로 


맛있는 고깃집이라고 해서 방문하였습니다.


이집은 고기를 굽는 석쇠가 아주 특이한데, 극세사 불판이라고 이름을 지었나 봅니다.

극세사 불판은 고기굽는 시간이 빠르고 숯불에 구워지는 면적이 많아서 직화구이의 풍미를 최대한 느낄 수 있도록 특수제되어진 불판이라고 하네요. ^^ 특허까지 출원을 하셨다네요. ㅋㅋㅋ


돼지 갈비와 흑돼지 목살을 주문하여 먹었는데요.

일하시는 아주머님이 직접 목살을 구워 주셨는데, 평소에 제가 구워 먹는 것보다 살짝 덜 구워 주시더라구요. 멜젓에 찍어서 맛있게 먹었습니다.











세종특별자치시 한솔동 금아화로



반응형

이마트 세종점 영업 시간


아래 싸이트에서 이마트 세종점 영업시간을 확인할 수 있습니다.


http://store.emart.com/branch/list.do



정상적인 이마트 세종점 영업시간은 10:00 ~ 23:00 입니다만,



아래와 같이 한시적으로 24:00까지 영업을 하였었지만, 이제는 영업시간 연장은 종료 되었습니다.



참고로, 이마트 세종점 휴점일은 매월 두번째, 네번째 주 일요일입니다.


반응형

KTX  예매되어 있는 표 인터넷에서 인쇄하기 / 재발권 하기



1. 로그인인 한 후에 마이페이지 선택



2. 승차권 선택



3. 인쇄 선택


4. 출력한 항목 선택 후에 인쇄 선택


5. 승차자 이름 입력 후에 인쇄 선택

6. "승차권 인쇄" 선택


7. 인쇄할 프린터 선택를 선택하면 인쇄가 됩니다.




반응형

[파이썬, Python] Wave 파일을 PCM 파일로 바꿔 저장하는 예제 3.


예제 2에서 약간 더 upgrade...

현재 폴더 뿐만 아니라 하위 폴더의 .wav 파일에 대해서 .pcm 파일을 생성하는 예제.


#!/usr/bin/python

import sys

import os.path


ext = None


def convert_wave_to_pcm(filename):

file = open(filename, 'rb')

byteBuffer = bytearray(file.read())

file.close()


fn_ext = os.path.splitext(filename)

if fn_ext[1] == '.wav':

out_filename = fn_ext[0] + '.pcm'

else:

out_filename = fn_ext[0] + fn_ext[1] + '.pcm'

print 'Out file name: %s' % out_filename

out_file = open(out_filename, 'wb')

out_file.write(byteBuffer[44:])

out_file.close()


if len(sys.argv) is 1:

YesNo = raw_input('Do you want to convert *.wav to *.pcm? (Yes or No): ') # There is no option.

if 'yes' in YesNo:

filename = '.wav'

print('Convert *.wav to *.pcm !!!')

else:

print('Please try it again with a filename or .wav !!!')

exit(0)

else:

filename = sys.argv[1]


while True:

fn_ext = os.path.splitext(filename)

if (not fn_ext[1]) & fn_ext[0].count('.'):

if fn_ext[0] == '.':

print 'Input file name is invalid!!!'

exit(0)

else:

print 'Input file name has the only ext!!!'

ext = fn_ext[0]

break

else:

try:

convert_wave_to_pcm(filename)

break

except:

print '[Error] No such file: %s' % filename

filename = raw_input('Please type file name: ')


if ext is not None:

folder = os.getcwd()

print 'folder: %s' % folder

for path, dirs, files in os.walk(folder):

if files:

for filename in files:

if filename.endswith(ext):

convert_wave_to_pcm(os.path.join(path, filename))


raw_input('Press Enter to exit')

exit(0)



wave2pcm_v2.py





[내 블로그 관련글]

반응형

[파이썬, Python] 하위 폴더를 포함한 파일 리스트 출력하기 예제.


os.walk를 이용한 예제입니다.

#!/usr/bin/python

import os.path


folder = os.getcwd()

print 'Current folder : %s' % folder


for path, dirs, files in os.walk(folder):

    print '\nFolder: ', path

    if files:

        for filename in files:

            print ' Files: ', os.path.join(path, filename)


exit(0)


실행 결과:

D:\myPython>python filelist2.py

Current folder : D:\myPython


Folder:  D:\myPython

 Files:  D:\myPython\example.py

 Files:  D:\myPython\fileList2.py


Folder:  D:\myPython\folder1

 Files:  D:\myPython\folder1\1.wav


Folder:  D:\myPython\folder1\folder11

 Files:  D:\myPython\folder1\folder11\11.wav

 Files:  D:\myPython\folder1\folder11\111.wav


Folder:  D:\myPython\folder1\folder12


Folder:  D:\myPython\folder2

 Files:  D:\myPython\folder2\2.wav


os.walk에대한 좀 더 자세한 내용은 아래를 참고 하세요.

https://docs.python.org/2/library/os.html#os.walk



fileList3.py


반응형

[파이썬, Python] Wave 파일을 PCM 파일로 바꿔 저장하는 예제 2.


예제 1에서 약간의 upgrade...

파일명으로 .wav를 입력할 경우, 

현재 폴더의 모든 .wav 파일에 대해서 .pcm 파일을 생성하는 예제.


#!/usr/bin/python

import sys

import os.path


ext = None


def convert_wave_to_pcm(filename):

file = open(filename, 'rb')

byteBuffer = bytearray(file.read())

file.close()


fn_ext = os.path.splitext(filename)

if fn_ext[1] == '.wav':

out_filename = fn_ext[0] + '.pcm'

else:

out_filename = fn_ext[0] + fn_ext[1] + '.pcm'

print 'Out file name: %s' % out_filename

out_file = open(out_filename, 'wb')

out_file.write(byteBuffer[44:])

out_file.close()


if len(sys.argv) is 1:

YesNo = raw_input('Do you want to convert *.wav to *.pcm? (Yes or No): ')

if 'yes' in YesNo:

filename = '.wav'

print('Convert *.wav to *.pcm !!!')

else:

print('Please try it again with a filename or .wav !!!')

exit(0)

else:

filename = sys.argv[1]


while True:

fn_ext = os.path.splitext(filename)

if (not fn_ext[1]) & fn_ext[0].count('.'):

if fn_ext[0] == '.':

print 'Input file name is invalid!!!'

exit(0)

else:

print 'Input file name has the only ext!!!'

ext = fn_ext[0]

break

else:

try:

convert_wave_to_pcm(filename)

break

except:

print '[Error] No such file: %s' % filename

filename = raw_input('Please type file name: ')


if ext is not None:

folder = os.getcwd()

print 'folder: %s' % folder

for filename in os.listdir(folder):

print filename

if filename.endswith(ext):

convert_wave_to_pcm(filename)


raw_input('Press Enter to exit')

exit(0)



wave2pcm_v1.py


반응형

[파이썬, Python] Wave 파일을 PCM 파일로 바꿔 저장하는 예제 1.


파일명.wav 인 경우에는 파일명.pcm으로 새로운 파일 생성 저장.

그렇지 않은 경우에는 파일명.확장자.pcm으로 새로운 파일 생성 저장.


#!/usr/bin/python

import sys

import os.path


if len(sys.argv) is 1:

filename = raw_input('Please type input file name: ') # There is no option.

else:

filename = sys.argv[1]

while True:

try:

file = open(filename, 'rb')

break

except:

print '[Error] No such file: %s' % filename

filename = raw_input('Please try again: ')

byteBuffer = bytearray(file.read())

file.close()


fn_ext = os.path.splitext(filename)

if fn_ext[1] == '.wav':

out_filename = fn_ext[0] + '.pcm'

else:

out_filename = fn_ext[0] + fn_ext[1] + '.pcm'

print 'Out file name: %s' % out_filename


out_file = open(out_filename, 'wb')

out_file.write(byteBuffer[44:])

out_file.close()

raw_input('Press Enter to exit')

exit(0)



wave2pcm.py


반응형

[파이썬, Python] 현재 폴더의 파일 리스트 출력하기 예제 (dir /w)


[filelist.py]

#!/usr/bin/python

import os.path


folder = os.getcwd()

print 'folder: %s' % folder

for filename in os.listdir(folder):

print filename


exit(0)


실행 결과:

D:\mytool>python filelist.py

folder: D:\mytool

filelist.py

filelist1.py



[filelist1.py]

#!/usr/bin/python

import os.path


folder = os.getcwd()

print 'folder: %s' % folder

for filename in os.listdir(folder):

fullname = os.path.join(folder,filename)

print fullname


exit(0)


실행 결과:

D:\mytool>python filelist1.py

folder: D:\mytool

D:\mytool\filelist.py

D:\mytool\filelist1.py



fileList.py

fileList1.py


반응형

[파이썬, Python] 논리연산



>>> True

True


>>> True and False

False

>>> True & False

False


>>> True or False

True

>>> True | False

True


>>> not True

False

>>> not False

True


>>> 1 > 0

True

>>> 1 < 0

False

>>> 1 == 0

False

>>> 0 == 0

True

>>> 1 != 0

True

>>> 1 is not 0

True

>>> 1 is 0

False


>>> bool(0)

False

>>> bool(1)

True


반응형

[파이썬, Python] String 검색

count(keyword, [start, [end]]) - keyword 포함 개수
endswith(postfix, [start, [end]]) - 문자열 끝에 postfix가 있는지 검사
find(keyword, [start, [end]]) - keyword가 있는 첫번째 인덱스, 없으면 -1
index(keyword, [start, [end]]) - keyword가 있는 첫번째 인덱스, 없으면 Error 발생


[출처] Python string|작성자 대한민군


>>> 'python'.count('p')

1

>>> 'python'.count('p',1)

0

>>> 'python'.find('p')

0

>>> 'python'.find('i')

-1

>>> 'python'.index('p')

0

>>> 'python'.index('i')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: substring not found

>>> 'python'.endswith('on')

True

>>> 'python'.endswith('hon')

True

>>> 'python'.endswith('onn')

False


반응형

+ Recent posts