python- המרת בסיסים

Buzz15

New member
python- המרת בסיסים

היי,אני חדש בפורום ובעולם התוכנה אז אם אפשר קצת סבלנות

קיבלנו לבנות תכנית שמקבלת מספר בן חמש ספרות ובבסיס מ1 עד 10
וצריכה להמיר אותו לדסימלי. (בלי להשתמש ב int)
אני אשמח לקצת הכוונה כי אני קצת אבוד כרגע \=
 

Buzz15

New member
צירפתי צילום של התרגיל,תודה!



 

BravoMan

Active member
בוא נתחיל מהיסוד:

האם אתה יודע לפתור תרגיל כזה על הנייר?
כלומר, האם אתה יודע איך עשו את החישוב דרכו הגיעו מ-61341 בבסיס 5 ל-3971 בבסיס 10?
 

Buzz15

New member
כן

בחישוב אני שולט לכל הבסיסים,רק בכתיבה עצמה אני מתקשה
 

BravoMan

Active member
אז הנה מה שאתה צריך לעשות קודם כל:

תכתוב צעד צעד, בשפה העברית, מה צריך לעשות כדי להגיע לפתרון.
למשל כך:
1. קלוט ספרות מהמשתמש
2. פרק ספרה ראשונה ממה שנקלט.
&nbsp
וכך הלאה.
&nbsp
אחרי שיהיו לך את הצעדים בעברית, ספר לנו היכן אתה מתקשה (אם אתה עדיין מתקשה) לתרגם אותם לקוד.
&nbsp
למשל, האם אתה יודע איך קולטים מחרוזות ב-Python?
האם אתה יודע איך מפרקים תו בודד ממחרוזת שנקלטה?
האם אתה יודע איך להמיר תו ספרה לערך המספרי שלו בלי להשתמש בפונקציה int?
&nbsp
ברגע שנוכל להבין נקודתית היכן הבעיה, נוכל גם לעזור.
 

Buzz15

New member
עד לכאן הגעתי

def f3(): sum=0
n= input("please enter the number: ")
basis= input ("please enter the base: ") for i in range(5): sum=(n%10)*(basis**i)+sum n=n//10 print(sum)f3()

זה הכי רחוק שהגעתי
הודעת שגיאה:
sum=(n%10)*(basis**i)+sum
TypeError: not all arguments converted during string formatting
 

BravoMan

Active member
יפה, עכשיו אפשר להתחיל לעזור לך!

יש הבדל בהתנהגות הפונקציה input בין Python 2 ל-Python 3.
&nbsp
אם אתה משתמש בגרסה 2 של Python הפונקציה אכן תנסה להמיר את הקלט למספר עבורך.
אם אתה משתמש בגרסה 3 לאומת זאת, הפונקציה תתייחס לכל קלט כמחרוזת.
&nbsp
ע"פ השגיאה, נראה שזה בדיוק מה שקורה - n ו-basis לא מכילים מספרים אלא טקסט, ולכן אתה לא יכול לעשות עליהם פעולות חשבוניות.
&nbsp
היות ואסרו עליו להשתמש ב-int, זה אומר שרצו שתמיר את התווים למספרים בעצמך.
האם אתה יודע לעשות זאת?
רמז: ערך ASCII של תו '0' הוא 0x30 (בהקסה) וכל שאר תווי הספרות באים אחריו ברצף.
&nbsp
בהצלחה!
 
למעלה