Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python สร้าง Equidigit Tuples (แบ่งตัวเลขครึ่งๆ)

แนวคิด

Equidigit tuples หมายถึงการแบ่งตัวเลขแต่ละตัวในลิสต์ออกเป็นสองส่วนเท่ากัน (หรือใกล้เคียง) โดยใช้จุดกึ่งกลางของจำนวนหลัก (digits) ตัวอย่างเช่น 5613 (4 หลัก) -> (56, 13)

ตัวอย่างโค้ด

my_list = [5613, 1223, 966143, 890, 65, 10221]
print("ลิสต์ต้นฉบับ:", my_list)

my_result = []
for sub in my_list:
    s = str(sub)
    mid_index = len(s) // 2
    element_1 = int(s[:mid_index])
    element_2 = int(s[mid_index:])
    my_result.append((element_1, element_2))

print("ผลลัพธ์:", my_result)

ผลลัพธ์

ลิสต์ต้นฉบับ: [5613, 1223, 966143, 890, 65, 10221]
ผลลัพธ์: [(56, 13), (12, 23), (966, 143), (8, 90), (6, 5), (10, 221)]

คำอธิบาย

  1. แปลงตัวเลขเป็นสตริงเพื่อนับจำนวนหลักและตัดสลายนี้ (slicing)
  2. len(s) // 2 หาตำแหน่งกึ่งกลาง (หารปัดลง)
  3. s[:mid] ส่วนหน้า, s[mid:] ส่วนหลัง
  4. แปลงกลับเป็น int และเก็บเป็น tuple

กรณีเลขคี่หลัก

ตัวเลขที่มีหลักคี่ เช่น 890 (3 หลัก) -> mid = 1 -> (8, 90) ส่วนหน้าสั้นกว่าส่วนหลัง 1 หลัก

เวอร์ชัน List Comprehension

result = [(int(str(x)[:len(str(x))//2]), int(str(x)[len(str(x))//2:])) for x in my_list]