Δημοσιεύτηκε: 12 Αύγ 2011, 23:23
από pmav99
@Ηλίας
binary_to_decimal σε python

Δε χρειάζεται να μετατρέπεις το str σε list. Και τα strings είναι iterables. H 1η function με list_comprehensions και η δεύτερη με τα αντίστοιχα loops. Σύνταξη για Python3. Για Python2 θέλουν αλλαγή τα raise (raise IOError, "number not a binary")
Spoiler: show
Κώδικας: Επιλογή όλων
DIGITS = ("0", "1")
def binary_to_decimal(b):
s = str(b)
if not all([i in DIGITS for i in s]):
raise IOError ("number not a binary")
return sum([int(digit) * 2**i for i, digit in enumerate(reversed(s))])

def binary_to_decimal(b):
s = str(b)
for i in s:
if i not in DIGITS:
raise IOError ("number not a binary")
dec_num = 0
for i, digit in enumerate(reversed(s)):
dec_num += int(digit) * 2**i
return dec_num


Για το decimal_to_binary μπορεί να χρησιμοπποιηθεί το keyword bin. Δες και εδώ.

Για τους αναγραμματισμούς
Spoiler: show
Κώδικας: Επιλογή όλων
from collections import Counter
def anagram(s1, s2):
""" Checks if s1 is an anagram of s2. Returns a boolean."""
return Counter(s1) == Counter(s2)

print(anagram("abcd", "dbca"))
print(anagram("helle", "hollo"))
print(anagram("z", "zzz"))
print(anagram("zzz", "z"))
print(anagram("z", "z"))