הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   python האות הבאה באלפאבית (https://hosts.co.il/forums/showthread.php?t=72961)

Slash 26-03-09 13:01

python האות הבאה באלפאבית
 
אני לומד עכשיו PYTHON ואני שובר את הראש ,
אני כתבתי פונקציה שהמטרה שלה לקבל סטרינג מהמשתמש עם מספר אותיות שרווח מפריד בינהם ואז להחזיר סטרינג שבמקום האותיות שהמשתמש הכניס יחזיר את האותיות הבאות באלפבית .

קוד:

def stringPlusOne(stri):
    s = list(stri)
    s = s[:len(s):2]
    for i in range(len(s)):
        s[i]+=1
    return s
st = raw_input("insert chars:")
print stringPlusOne(st)
raw_input("exit")

השאלה שלי איך אני משיג את האו הבאה באלפבית ? חשבתי על לעשות ליסט של כל האותיות אבל זה פשוט נראה לי טיפשי גם לעשות טבלת translate נראה לי טיפשי .

יש אפשרות כמו בשפות אחרות פשוט לעשות ++ ? כי זה לא עובד .

תודה .

vadimg88 26-03-09 13:37

אין ++ לאותיות בPY. מה שאתה כן יכול לעשות ליצור מערך של כל האותיות אז להשתמש ב++ על המערך והוא יעבור לאלמנט הבא במערך בכל פעם. זו הדרך הנכונה לעשות את זה כנראה.

Slash 26-03-09 14:20

ציטוט:

נכתב במקור על ידי vadimg88 (פרסם 704945)
אין ++ לאותיות בPY. מה שאתה כן יכול לעשות ליצור מערך של כל האותיות אז להשתמש ב++ על המערך והוא יעבור לאלמנט הבא במערך בכל פעם. זו הדרך הנכונה לעשות את זה כנראה.

כן חשבתי על זה , אבל זה לא נראה לי הגיוני , איך בשפה אין דבר כזה בסיסי !

vadimg88 26-03-09 15:05

בPHP אתה גם לא יכול לתת למשתנה ערך שהוא סטרינג של אות, להגדיר למשתנה ++ ולצפות שזה יעלה באחד. זה סטרינג הרי הוא לא יודע מה בא אחריו.

Megnum 26-03-09 16:17

מה הבעיה לעשות את זה בקוד האסקי? למשל בPHP אפשרי מקווה שגם בפייתון למשל קוד האסקי של a =97 b=98 וכן הלאה.

mlnn 26-03-09 16:23

ציטוט:

נכתב במקור על ידי vadimg88 (פרסם 704958)
בPHP אתה גם לא יכול לתת למשתנה ערך שהוא סטרינג של אות, להגדיר למשתנה ++ ולצפות שזה יעלה באחד. זה סטרינג הרי הוא לא יודע מה בא אחריו.

תתפלא ;P זה דווקא כן יעבוד בphp.

ונראה שאמרו את כל האפשוריות שיש לך...

vadimg88 26-03-09 16:35

ציטוט:

תתפלא זה דווקא כן יעבוד בphp.
דוגמא? מעולם לא שמעתי על זה.

mlnn 26-03-09 16:44

PHP קוד:

<?php
$text
="hello";
$ot=$text[0];
$ot++;
echo 
$ot;
?>


vadimg88 26-03-09 18:12

זה ברור כי, כי אתה מפצל אותו למערך שבסופו של דבר תעשה את מה שאמרתי כבר למעלה. אבל הוא התכוון למשהו כזה:

PHP קוד:

$first_letter "A";
$first_letter++;
echo 
$first_letter// OP would like this to output B , 


mlnn 26-03-09 18:23

ציטוט:

נכתב במקור על ידי vadimg88 (פרסם 704982)
זה ברור כי, כי אתה מפצל אותו למערך שבסופו של דבר תעשה את מה שאמרתי כבר למעלה. אבל הוא התכוון למשהו כזה:

PHP קוד:

$first_letter "A";
$first_letter++;
echo 
$first_letter// OP would like this to output B , 


גם הקוד שלך פועל

intercooler3819 26-03-09 20:33

ואדים תנסה את זה
PHP קוד:

<?php
for ($i 'a'$i 'z'$i++) echo $i;

הפלט:
abcdefghijklmnopqrstuvwxy

כיוון שה INTERPRETER עושה את ההמרה בעצמו אם כתבת תו אחד, במיוחד עם גרש, הוא ייחס אותו בתור CHAR למרות שאין CHAR בPHP אלא רק STRING
הלולאה למעלה עובדת בC, C#, PHP וכמעט כל שפת תכנות הגיונית אין הבדל בין גלגול של תווים או גלגול של מספרים, הייצוג בASCII של התווים הוא זהה לגלגול של מספרים ועובד על אותו עקרון
לעומת אנגלית לא תוכל לבצע את אותו דבר בעברית מהסיבה שה INTERPRETER לא עובד בUTF

vadimg88 26-03-09 20:41

WTF ..... ואו זה היה שוק. לא ניסיתי את זה אפילו לפני שפרסמתי. אכן עובד.

intercooler3819 26-03-09 20:45

חח למה שוק (:

היגיון בריא..
זה עובד בכל שפה אחרת - למה שלא יעבוד בPHP?

vadimg88 26-03-09 21:01

סתם לא נתקלתי בזה פשוט אף פעם, נחמד לדעת שזה אפשרי.

Slash 26-03-09 22:10

קודם כל גם אני פירקתי את הסטרינג למערך , וביררתי ובאמת האפשרות היחידה זה דרך מילון , אני פשוט יעזוב את התרגיל הזה , הוא לא חשוב וסתם הרבה עבודה מיותרת ולא משרת את המטרה שלשמה אני לומד PY .

Shay Ben Moshe 27-03-09 19:27

אממ אני לא יודע אם זה עוזר לך, כי אני לא יודע Python אבל אני מאמין שאת הקוד הזה שכתבתי בדקה אפשר גם לכתוב בPython בקלות..

PHP קוד:

<?php

$word 
"This is text"// The orginial text
$word2 ""// The new text

// We use a loop to transform each letter to the next letter
for($i=0;$i<strlen($word);$i++) {
    
$letternow $word[$i]; // Select the letter
    
$letternow++; // Transform the letter to the next one
    
$word2 .= $letternow// Add the new letter to $word2
}

echo 
$word2// Echo the new text

מקווה שעזרתי :/
בהצלחה

Slash 27-03-09 19:29

לא קראתה מה רשמתי , בPHP , C ,JAVA וכו זה קל , בPYTHON פשוט אין ++ לCHAR .
זאת הייתה הבעיה .

sholaman 27-03-09 21:17

אני לא מכיר את השפה הזאת אבל אין אפשרות שם להמיר CHAR לINT?!?
תעביר לINT, תקדם אותו באחד ואז תחזיר לCHAR

Slash 28-03-09 04:10

ציטוט:

נכתב במקור על ידי sholaman (פרסם 705222)
אני לא מכיר את השפה הזאת אבל אין אפשרות שם להמיר CHAR לINT?!?
תעביר לINT, תקדם אותו באחד ואז תחזיר לCHAR

ניסיתי להמיר לINT ונותן לי שגיאת קומפילציה , נניח "42" אפשר להמיר לINT אבל "c" אי אפשר .

sholaman 28-03-09 09:55

ציטוט:

נכתב במקור על ידי Slash (פרסם 705260)
ניסיתי להמיר לINT ונותן לי שגיאת קומפילציה , נניח "42" אפשר להמיר לINT אבל "c" אי אפשר .

בטוח יש פונקציה שתתן לך את הערך הASCI של התו
קשה לי להאמין שאין, זה קיים בכל שפה

Slash 28-03-09 13:26

ציטוט:

נכתב במקור על ידי sholaman (פרסם 705275)
בטוח יש פונקציה שתתן לך את הערך הASCI של התו
קשה לי להאמין שאין, זה קיים בכל שפה

פשששש עליתה על דרך יפה .
באמת אפשר לקחת לעשות :
קוד:

ord("c")
ואז רק באות "z" לפתור את זה עם תנאי IF .

אני פתרתי בסוף בעזרת מילון , אבל זאת גם דרך יפה.

psycho 28-03-09 19:29

למה לא לקחת אות אות, לעשות ORD + 1 ולהדפיס, ולבדוק לפני, שלא מדובר ב Z, אחרת להדפיס A
וזהו.

לא צריך מילון ולא בטיח

sholaman 28-03-09 20:54

ציטוט:

נכתב במקור על ידי Slash (פרסם 705333)
פשששש עליתה על דרך יפה .
באמת אפשר לקחת לעשות :
קוד:

ord("c")
ואז רק באות "z" לפתור את זה עם תנאי IF .

אני פתרתי בסוף בעזרת מילון , אבל זאת גם דרך יפה.

לא עליתי על שום דרך,
זה מה שקורה כשעושים ++ לCHAR
זה מעלה את הערך הASCI שלו באחד
בכל מקרה אם אין לך אז תעשה את זה ידני.

זה נראה לי הפיתרון הכי טוב.

Slash 29-03-09 03:20

זה בדיוק מה שאמרתי .


כל הזמנים הם GMT +2. הזמן כעת הוא 02:42.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ