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

เขียนโปรแกรมต่อท้าย Magic Numbers จาก 1 ถึง 100 ใน Pandas series


ผลลัพธ์สำหรับการต่อท้ายเลขมหัศจรรย์จาก 1 ถึง 100 คือ

magic number series:
0       1
1       10
2       19
3       28
4       37
5       46
6       55
7       64
8       73
9       82
10      91
11     100

เพื่อแก้ปัญหานี้ เราจะปฏิบัติตามแนวทางด้านล่าง -

โซลูชันที่ 1

  • สร้างความเข้าใจรายการเพื่อผนวกค่า 1 ถึง 100 ลงในรายการ ls

ls = [i for i in range(1,101)]
  • ใช้ฟังก์ชันตัวกรองแลมบ์ดาเพื่อเก็บค่าที่หารด้วย 9 ผลลัพธ์ได้เท่ากับ 1

l = list(filter(lambda i:i%9==1,ls))
  • สร้างซีรีส์จากรายการ l.

pd.Series(l)

ตัวอย่าง

มาดูโค้ดด้านล่างกันเพื่อความเข้าใจที่ดีขึ้น

import pandas as pd
ls = [i for i in range(1,101)]
l = list(filter(lambda i:i%9==1,ls))
print("magic number series:\n",pd.Series(l))

ผลลัพธ์

magic number series:
0       1
1       10
2       19
3       28
4       37
5       46
6       55
7       64
8       73
9       82
10      91
11     100

โซลูชันที่ 2

  • สร้างรายการว่าง

  • ตั้งค่าช่วงลูปตั้งแต่ 1 ถึง 101 และตั้งค่า digit_sum เป็น 0

for i in range(1,101):
   digit_sum = 0
  • กำหนดค่า i เป็นค่าชั่วคราว เพื่อไม่ให้เปลี่ยนค่า i

  • ตั้งค่าในขณะที่เงื่อนไขวนรอบเป็น temp> 0

  • คำนวณส่วนที่เหลือและ digit_sum ดังนี้

while(temp>0):
   rem = temp % 10
   digit_sum = digit_sum + rem
   temp = temp // 10
  • สุดท้ายตั้งค่า if condition ให้ตรวจสอบค่า digit_sum อย่างใดอย่างหนึ่งหรือ 10 ถ้าเป็นจริง ให้ผนวกค่าในรายการ

if(digit_sum==1 or digit_sum==10):
   l.append(i)
  • สุดท้าย สร้างซีรีส์จากรายการ

ตัวอย่าง

มาตรวจสอบรหัสต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

import pandas as pd
l = []
for i in range(1,101):
   digit_sum = 0
   temp = i
   while(temp>0):
      rem = temp % 10
      digit_sum = digit_sum + rem
      temp = temp // 10
   if(digit_sum==1 or digit_sum==10):
      l.append(i)
print("magic number series:\n",pd.Series(l))

ผลลัพธ์

magic number series:
0       1
1       10
2       19
3       28
4       37
5       46
6       55
7       64
8       73
9       82
10      91
11     100