اذهب إلى المحتوى
  • 0

خطأ ValueError: invalid literal for int() with base 10 في بايثون

Adam Ebrahim

السؤال

أحاول أن أقوم بتحويل نص إلى رقم صحيح كالتالي:

>>> x = "10.111 "
>>> int(x)

لكني أحصل على الخطأ التالي:

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: invalid literal for int() with base 10: '10.111 '

ثم حاول أن أقوم بإزالة المسافات الإضافية من النص كالتالي:

>>> int(x.strip())

لكن تحدث نفس المشكلة وأحصل على نفس الخطأ، كيف أقوم بتحويل هذا النص إلى رقم صحيح؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

لنحل المشكلة، إما نقتطع الجزء الأول من النص (ما قبل النقطة):

x = "10.111"

int(x.split('.')[0])

أو نقوم بعملية تحويل مزدوجة، من نص إلى float ثم إلى int:

x = "10.111"

int(float(x))

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

السبب أن 10.111 هو عدد عشري في هيئة سلسلة نصية و ليس عدد صحيح فلو كان "10" يُمكنك إستخدام int مباشرة:

x = "10"
print(int(x)) # 10

بما أنه عشري يُمكنك إستخدام float لتحويله من نص إلى float ثم بإمكانك أخذ العدد الصحيح منه:

x = "10.111 "
print(int(float(x))) # 10

او إستخدام دوال math بالشكل الذي تريد مثال:

import math       
  
x = "5.6"

print(math.floor(float(x))) # 5
print(math.ceil(float(x))) # 6
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...