4.1. จุดประสงค์
4.2. ข้อมูลประเภท ข้อความ
4.3. การประกาศข้อมูลประเภทข้อความใน Python
หมายเหตุ สำหรับ python 3.6+ name = 'Paul' lastname = "Phoenix" print("My name is ", name, lastname, '.') print(f'My name is {name} {lastname}.') text = f"My name is {name} {lastname}." print(text) type(name) type(lastname) print( type(text) ) # <class 'str'> 4.4. การรับข้อมูล ประเภท ข้อความname = input('Please enter your name ') lastname = input() print(f'Hello, {name} {lastname}.') 4.5. การจัดเก็บข้อมูลประเภท ข้อความstring representation 4.6. การเข้าถึงตัวอักขระใน ข้อความ โดยใช้ตัวเลขจำนวนเต็มระบุตำแหน่งname = 'Paul Phoenix' len(name) # 12 name[0] # 'P' name[1] # 'a' name[4] # ' ' 4.7. การระบุตำแหน่งจากด้านหลังของ ข้อความname[len(name)-3] # 'n' name[len(name)-2] # 'i' name[len(name)-1] # 'x' n = len(name) name[n-3] name[n-2] name[n-1] name[-3] # 'n' name[-2] # 'i' name[-1] # 'x' 4.8. การตัดกลุ่มของอักขระ (slicing, substring)
name = 'Paul Phoenix' name[0:4] # 'Paul' name[5:12] # 'Phoenix'
4.9. การนำ ข้อความ มาต่อกัน
4.10. การไล่ดูตัวอักขระใน ข้อความ โดยใช้ for
4.11. ตารางสรุปตารางสรุป
4.12. การแบ่งข้อความออกเป็นกลุ่ม
days = 'MonTueWedThuFriSatSun' print(days[0:3]) # 'Mon' print(days[3:6]) # 'Tue' print(days[6:9]) # 'Wed' print(days[9:12]) # 'Thu' print(days[12:15]) # 'Fri' print(days[15:18]) # 'Sat' print(days[18:21]) # 'Sun' print(days[0*3:1*3]) # 'Mon' print(days[1*3:2*3]) # 'Tue' print(days[2*3:3*3]) # 'Wed' print(days[3*3:4*3]) # 'Thu' print(days[4*3:5*3]) # 'Fri' print(days[5*3:6*3]) # 'Sat' print(days[6*3:7*3]) # 'Sun' โจทย์ จงเขียนโปรแกรมเพื่อรับตัวเลขจากผู้ใช้แล้วแสดงชื่อวัน ตัวอย่างข้อมูล
days = 'MonTueWedThuFriSatSun' n = int(input()) print(days[n*3:(n+1)*3])
4.13. Exercises
4.14. การจัดรูปแบบการแสดงข้อความ4.14.1. การจัดรูปแบบโดยใช้ %name = 'Paul' lastname = 'Phoenix' gpa = 3.123456 print( 'GPA of %s %s is %f' % (name, lastname, gpa) ) # GPA of Paul Phoenix is 3.123456 print( 'GPA of %s %s is "%f"' % (name, lastname, gpa) ) # GPA of Paul Phoenix is "3.123456" print( 'GPA of %s %s is "%5.2f"' % (name, lastname, gpa) ) # GPA of Paul Phoenix is " 3.12" 4.14.2. การจัดรูปแบบโดยใช้ format()name = 'Paul' lastname = 'Phoenix' gpa = 0.123456 print( 'GPA of {} {} is {}'.format(name, lastname, gpa) ) print( 'GPA of {} {} is {:5.2f}'.format(name, lastname, gpa) ) 4.14.3. การจัดรูปแบบโดยใช้ f-string สำหรับ python 3.6+name = 'Paul' lastname = 'Phoenix' gpa = 3.123456 print( f'GPA of {name} {lastname} is {gpa:5.2f}' ) 4.15. ลำดับกับข้อความใน Python ข้อความ ถือว่าเป็น ลำดับ (sequence) และสามารถใช้ตัวดำเนินการแบบเดียวกับลำดับประเภทอื่นๆ ข้อมูลประเภทลำดับ(sequence) ที่พบบ่อยในภาษา Python คือ list ซึ่งสมาชิกในลำดับจะเป็นข้อมูลประเภทใดก็ได้ แต่โดยปกติแล้วสมาชิกใน list จะเป็นประเภทเดียวกันเพื่อให้ง่ายต่อการหาข้อผิดพลาดของ code (debug)
[1, 2, 3, 4, 5, 6] ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] a = [1, 2, 3, 4, 5, 6] days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] type(a) # <class list> type(days) # <class list>
4.16. ข้อความ str ต่างจาก list
days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] letters = 'ABCDEF' days[1] = 'Tuesday' letters[1] = 'b' # TypeError: 'str' object does not support item assignment
4.17. การเข้ารหัสตัวอักขระ
print('\u0E01') print('\u23F0 = ⏰') c = 0x23F0 for i in range(10): print(chr(c+i), end=' ')
kor = ord('ก') hor = ord('ฮ') for i in range(kor, hor): print(chr(i), end=' ') 4.18. Exercises แสดงอักขระในช่วงต่อไปนี้
4.19. ฟังก์ชันที่สำคัญของ strตารางสรุป
4.20. ฟังก์ชันในการเพิ่มสมาชิกใน lista = [1, 2, 3, 4] a.append(5) print(a) # [1, 2, 3, 4, 5]
a = [] for i in range(5): n = int(input()) a.append(n) print(a)
a = [] n = int(input('ระบุจำนวนบรรทัดที่จะกรอก: ')) for i in range(n): line = input() a.append(line) print(a) 4.21. ตัวอย่างการเขียนโปรแกรมเพื่อหาหลักสูตรที่มีเกรดเฉลี่ยสูงที่สุดโจทย์ มหาวิทยาลัยแห่งหนึ่งต้องการหาหลักสูตรที่มีเกรดเฉลี่ยของนักศึกษาทุกคนในหลักสูตรสูงที่สุด งานทะเบียนจึงได้รวบรวมเกรดเฉลี่ยของนักศึกษาทุกคนในของทุกหลักสูตรไว้รวมกันโดยข้อมูลของแต่ละหลักสูตรจะอยู่ใน 1 บรรทัด
ซึ่งประกอบไปด้วยเกรดเฉลี่ยของนักศึกษาในหลักสูตรทุกคนและเกรดเฉลี่ยแต่ละค่าคั่นด้วย comma จงเขียนโปรแกรมเพื่อหาหลักสูตรที่มีเกรดเฉลี่ยรวมของนักศึกษาสูงที่สุด ผลลัพธ์ของโปรแกรมจะต้องแสดง เกรดเฉลี่ยของหลักสูตรที่สูงที่สุด ตัวอย่าง Input 3 2.55, 3.40, 3.55, 2.95, 3.00, 3.25 3.25, 2.40, 3.55, 3.95, 3.22, 3.53, 3.20, 3.32 3.45, 3.22, 2.95, 3.95, 2.75, 3.66, 2.99, 3.34 ตัวอย่าง Output Algorithm
Implementation n = int(input()) all_avg = [] for i in range(n): line = input() info = line.split(',') gpa = [] for e in info: gpa.append( float(e) ) avg = sum(gpa)/len(gpa) all_avg.append(avg) print( max(all_avg) )
ตัวอย่าง Input 3 Biology, 2.55, 3.40, 3.55, 2.95, 3.00, 3.25 Computer Science, 3.25, 2.40, 3.55, 3.95, 3.22, 3.53, 3.20, 3.32 Business Administration, 3.45, 3.22, 2.95, 3.95, 2.75, 3.66, 2.99, 3.34 ตัวอย่าง Output hint
a = [ [2,'A'], [1,'B'], [3,'C'] ] a.sort() print(a) # [ [1,'B'], [2,'A'], [3,'C'] ] 4.22. Multi-line string - ข้อความหลายบรรทัดa = """ข้อความหลายบรรทัด แต่ละบรรทัดจะแยกด้วย อักขระ \n ซึ่งเรียกว่า newline character """ print('''ข้อความหลายบรรทัด แต่ละบรรทัดจะแยกด้วย อักขระ \n เรียกว่า newline character ''') 4.23. ไฟล์ข้อมูล (File)
line one line two line four เก็บใน text file เป็น line one\\nline two\\n\\nline four 4.24. การอ่านข้อความจากไฟล์ (reading from text file)
f = open('data.txt', 'r') all_text = f.read() print(all_text) f.close()
f = open('data.txt', 'r') lines = f.readlines() print(lines) f.close()
f = open('data.txt', 'r') for line in f: print(line) f.close() 4.25. การเขียนข้อความลงไฟล์ (writing to text file)
lines = """3 Biology, 2.55, 3.40, 3.55, 2.95, 3.00, 3.25 Computer Science, 3.25, 2.40, 3.55, 3.95, 3.22, 3.53, 3.20, 3.32 Business Administration, 3.45, 3.22, 2.95, 3.95, 2.75, 3.66, 2.99, 3.34 """ f = open('gpa_data.txt', 'w') # open in writing mode f.write(lines) f.close()
lines = [ '3', 'Biology, 2.55, 3.40, 3.55, 2.95, 3.00, 3.25', 'Computer Science, 3.25, 2.40, 3.55, 3.95, 3.22, 3.53, 3.20, 3.32', 'Business Administration, 3.45, 3.22, 2.95, 3.95, 2.75, 3.66, 2.99, 3.34' ] f = open('gpa_data.txt', 'w') # open in writing mode f.writelines(lines) f.close()
lines = [ '3', 'Biology, 2.55, 3.40, 3.55, 2.95, 3.00, 3.25', 'Computer Science, 3.25, 2.40, 3.55, 3.95, 3.22, 3.53, 3.20, 3.32', 'Business Administration, 3.45, 3.22, 2.95, 3.95, 2.75, 3.66, 2.99, 3.34' ] f = open('gpa_data.txt', 'w') # open in writing mode f.write( '\n'.join(lines) ) f.close()
ตัวอย่าง Input ไฟล์ ``gpa_data.txt`` 3 Biology, 2.55, 3.40, 3.55, 2.95, 3.00, 3.25 Computer Science, 3.25, 2.40, 3.55, 3.95, 3.22, 3.53, 3.20, 3.32 Business Administration, 3.45, 3.22, 2.95, 3.95, 2.75, 3.66, 2.99, 3.34 ตัวอย่าง Output Biology Business Administration Computer Science |