4: Repetition

4-7: break

** ถ้าใช้งานบนมือถือหรือ tablet แนะนำให้ใช้ Chrome หรือ Safari เท่านั้น **

แบบฝึกหัด 4-7 ข้อที่ 1

เขียนโปรแกรมตามผังงานข้าง ๆ นี้ (ข้อมูลที่รับจาก input เป็นจำนวนเต็ม)

___inp___ = [10, 2, 3, -1] def input(): t = ___inp___.pop(0) ___inp___.append(t) return str(t) n = int(input()) s = 0 k = 0 while k < n: x = int(input()) if x < 0: break s += x*k k += 1 print(s) Ex().check_while(missing_msg="ใช้วงวน while") for v in [[10, 1, 2, 3, 4, -1], [0], [5, 11, 13, 14, 19, 20]]: Ex().has_equal_output(pre_code="___inp___[:] =" + str(v), incorrect_msg = "ผิด เช่น กรณีอินพุตเป็น " + " ".join(str(e) for e in v))
แบบฝึกหัด 4-7 ข้อที่ 2

เขียนโปรแกรมตามผังงานข้าง ๆ นี้ (ข้อมูลที่รับจาก input เป็นจำนวนเต็ม)

___inp___ = [10, 2, 3, -1] def input(): t = ___inp___.pop(0) ___inp___.append(t) return str(t) n = int(input()) s = 0 for k in range(n): x = int(input()) if x < 0: break s += x*k print(s) Ex().check_for_loop(missing_msg="ใช้วงวน for") for v in [[10, 1, 2, 3, 4, -1], [0], [5, 11, 13, 14, 19, 20]]: Ex().has_equal_output(pre_code="___inp___[:] =" + str(v), incorrect_msg = "ผิด เช่น กรณีอินพุตเป็น " + " ".join(str(e) for e in v))
แบบฝึกหัด 4-7 ข้อที่ 3

อ่านสตริงจาก input แล้วแยกสตริงออกเป็นสองส่วน เพื่อนำไปแสดง โดยตัวแยกอาจเป็น @ หรือ : หรือ - หรือ + ก็ได้ เช่น abc@def แยกได้เป็น abc กับ def (สตริงที่รับมามีตัวแยกที่กำหนดไว้ตัวใดตัวหนึ่งแค่ตัวเดียวแน่ ๆ)

___inp___ = ["abc@def"] def input(): return ___inp___[0] t = input() for k in range(len(t)): if t[k] in "@:-+": break s1 = t[:k] s2 = t[k+1:] print(s1, s2) for v in ["abc@def", "a:bcdefg", "abcd-efghi", "abdefg+x"]: Ex().has_equal_output(pre_code="___inp___[0] ='" + v + "'", incorrect_msg = "ผิด เช่น กรณีอินพุตเป็น " + v)
ใช้วงวนเปลี่ยน index จากซ้ายไปขวาของสตริง หยิบแต่ละอักขระมาดู ถ้าเป็นตัวแยก ก็ break ออกมา ได้ index ของตำแหน่งที่แยกสตริงได้
แบบฝึกหัด 4-7 ข้อที่ 4

แบบฝึกหัดข้อที่แล้ว ประกันว่ามีตัวแยกแน่ ๆ ในสตริงที่อ่านเข้ามาจาก input ในข้อนี้สตริงที่อ่านมาอาจไม่มีตัวแยกก็ได้ ถ้าไม่มีก็แสดงสตริงเดิมที่รับมา ถ้ามีตัวแยก ก็แสดงเหมือนข้อที่แล้ว

___inp___ = ["abc@def"] def input(): return ___inp___[0] t = input() found = False for k in range(len(t)): if t[k] in "@:-+": found = True break if found: s1 = t[:k] s2 = t[k+1:] print(s1, s2) else: print(t) for v in ["abc@def", "a:bcdefg", "abcd-efghi", "abdefg+x", "abcdefgh"]: Ex().has_equal_output(pre_code="___inp___[0] ='" + v + "'", incorrect_msg = "ผิด เช่น กรณีอินพุตเป็น " + v)
มีตัวแปร f ให้ค่าเริ่มต้นเป็นเท็จ ภายในวงวน ถ้าพบตัวแยก ก่อนจะ break ออก ก็ให้ f เป็นจริง หลังออกจากวงวน ก็ตรวจดูว่า f เป็นจริงหรือเท็จ ถ้าเป็นจริงก็แสดงว่าพบตัวแยก ถ้าเป็นเท็จก็แสดงว่าไม่พบ