ในหัวข้อนี้เราจะเรียนรู้เกี่ยวกับวิธีการแปลงสตริงเป็นจำนวนเต็มโดยมีและไม่ใช้ชนิดข้อมูลในตัว เราทราบดีว่าสตริงคือชุดของอักขระที่จัดเรียงตามลำดับล้อมรอบภายในเครื่องหมายคำพูดและจำนวนเต็มคือตัวเลขที่ไม่มีจุดทศนิยมและไม่ได้อยู่ในเครื่องหมายคำพูดประเภทใด ๆ
แต่เมื่อคำถามมาถึงวิธีการแปลงข้อมูลประเภทหนึ่งไปยังอีกประเภทหนึ่ง Python มีวิธีง่ายๆในการแปลงซึ่งกันและกัน ในกรณีนี้เราจะเห็นว่าเราสามารถแปลงสตริงเป็นจำนวนเต็มตามลำดับต่อไปนี้ได้อย่างไร:
การใช้ประเภทข้อมูลในตัว
สมมติว่าเมื่อฉันรับอินพุตจากผู้ใช้ด้วยเหตุผลบางประการ Python จะรับมันและส่งคืนเป็นสตริงเอง กล่าวอีกนัยหนึ่งแม้ว่าบางคนจะพิมพ์ตัวเลขเป็นอินพุต Python จะส่งกลับเป็นสตริง
name = input ('What is your name:') print (name) print (type (name)) age = input ('What is your age:') print (age) print (type (age))
เอาท์พุต:
คุณชื่ออะไร: Tyra
ไทระ
คุณอายุเท่าไร: 20
ยี่สิบ
คุณจะเห็นว่าประเภทของชื่อและอายุที่ใช้ในการป้อนข้อมูลคือ 'สตริง'
ตอนนี้สมมติว่าถ้าเราต้องการเพิ่มอายุ 5 เราจะดำเนินการดังต่อไปนี้:
name = input ('What is your name:') print (name) print (type (name)) age = input ('What is your age:') print (age) print (type (age)) print (age +) 5)
เอาท์พุต:
คุณชื่ออะไร: Tyra
ไทระ
คุณอายุเท่าไร: 20
6 วิธีในการใช้คีย์เวิร์ดนี้มีอะไรบ้าง
ยี่สิบ
Traceback (โทรล่าสุดล่าสุด):
ไฟล์ 'C: /Users/prac.py' บรรทัดที่ 9 ใน
พิมพ์ (อายุ + 5)
TypeError: ต้องเป็น str ไม่ใช่ int
เราไม่สามารถเพิ่มอายุ 5 ขวบได้เนื่องจากอายุเป็นประเภท String และเราไม่สามารถคำนวณทางคณิตศาสตร์โดยตรงกับสตริงได้ ดังนั้นเราจึงต้องเปลี่ยนอายุเป็นจำนวนเต็มเนื่องจากเราใช้อายุเป็นอินพุตและ Python จะส่งกลับเป็น String
ดังนั้น.
name = input ('What is your name:') print (name) print (type (name)) age = input ('What is your age:') print (age) print (type (age)) age = int ( อายุ) พิมพ์ (อายุ + 5)
เอาท์พุต:
คุณชื่ออะไร: Tyra
ไทระ
คุณอายุเท่าไร: 20
ยี่สิบ
25
วิธีธรรมดา
สมมติว่าเราไม่ต้องการใช้ฟังก์ชัน int () ในตัวเพื่อแปลงสตริงเป็นจำนวนเต็มดังนั้นเราจึงต้องใช้ไฟล์ วิธีธรรมดา ในการแปลง
นี่คือวิธีง่ายๆในการแปลงโดยไม่ต้องใช้ int ()
'' '' 123 '-> 123' -12332 '-> -12332' '' def str_to_int (input_str): output_int = 0 ถ้า input_str [0] == '-': start_idx = 1 is_negative = True else: start_idx = 0 is_negative = False สำหรับ i ในช่วง (start_idx, len (input_str)): place = 10 ** (len (input_str) - (i + 1)) digit = ord (input_str [i]) - ord ('0') output_int + = place * หลักถ้า is_negative: return -1 * output_int else: return output_int s = '554' x = str_to_int (s) print (type (x)) s = '123' print (str_to_int (s)) s = พิมพ์ '-123' (str_to_int (s))
เอาท์พุต:
123
-123
ขั้นแรกเราจะตรวจสอบว่าหมายเลขที่ผู้ใช้ให้มามีเครื่องหมายลบหรือไม่นั่นคือจำนวนลบหรือไม่หากมีอยู่ในตำแหน่งแรกในเครื่องหมายลบเราจะเริ่มการแปลงจากตำแหน่งที่สองซึ่งมีตัวเลข
ตัวเลขใดก็ได้สมมติว่า 123 เขียนได้ในแบบฟอร์ม -10 ** 2 * 1 + 10 ** 1 * 2 + 10 ** 0 * 3
ในทำนองเดียวกันเราแยกแต่ละหมายเลขอินพุตโดยใช้ คำ (อาร์กิวเมนต์) .
ord (‘0’) จะส่งคืน 48, ord (‘1’) ส่งกลับ 49 เป็นต้น
ปัดสองครั้งเป็น int java
ที่นี่เราใช้ตรรกะที่ว่า ord ('1') - ord ('0) = 1, ord (' 2 ') - ord (' 0 ') = 2 เป็นต้นซึ่งทำให้เรามีจำนวนนัยสำคัญที่จะดึงมาจากที่กำหนด หมายเลขอินพุต
ในที่สุดผลลัพธ์ที่เราได้รับจากฟังก์ชันเป็นจำนวนเต็มที่ถูกต้องซึ่งเราแปลงจากสตริงอินพุตที่กำหนด
อย่างที่คุณเห็นเราสามารถแปลงสตริงใด ๆ เป็นจำนวนเต็มโดยใช้ฟังก์ชัน int () หรือด้วยวิธีธรรมดาก็ได้
ฉันหวังว่าคุณจะเรียนรู้แนวคิดได้ดีและลองใช้เพื่อให้แม่นยำยิ่งขึ้นและด้วยเหตุนี้เราจึงมาถึงตอนท้ายของบทความนี้เกี่ยวกับการแปลง String เป็น int โดยใช้ Python
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบทช่วยสอน String to Integer และเราจะติดต่อกลับโดยเร็วที่สุด
หากต้องการรับความรู้เชิงลึกเกี่ยวกับ Python พร้อมกับแอพพลิเคชั่นต่างๆคุณสามารถลงทะเบียนเพื่อถ่ายทอดสด ด้วยการสนับสนุนตลอด 24 ชั่วโมงทุกวันและการเข้าถึงตลอดชีวิต