yoldaşlar salam. pythonda bitwise operatorlarla məşq eləyirəm.
xırda bir kod yazmaq lazım oldu, yazdım.
def flipb(number, n): mask = (0b1<<(n-1)) if type(number) == str: result = int(number,2)^mask else: result = number^mask print bin(result)
məğzi budu ki, binar formatda verilən (dırnaqlı yaxud dırnaqsız) ədədin sağdan n-ci bitini, əgər 0-dısa, 1-ə çevirəcək.
öz kompüterimdə yazdım, yoxladım. bir problem çıxmadı.
onlayn kompilyatorsa deyir ki, flipb(‘0b111’, 2) 0b101 nəticəsini verməlidi amma None verir.
lokalda flipb(‘0b111’, 2) də, flipb(0b111, 2) də 0b101 nəticəsini verir; yəni veb tətbiqinin mənə irad tutduğu şeyi. indi çaş-baş qalmışam.
sağdan n-ci yandırmaq (1-ə çevirmək) üçün başqa bir yol təklif eləyə bilərsiz?
Verilmiş cavablar və yazılan şərhlər (2 cavab var)
2
Sizin kodda bir balaca dəyişiklik edib, onlayn kompilyatorda yoxladım. Kodu aşağıdakı şəkildə dəyişdirdim.
import binasciiburdan nəticəyə baxa bilərsiz.
def flipb(number, n):
if type(number)==str:
x=int(number,2)
else:
x=number
return x^(1<
1
çox sağ olun. mən orda naşılıq eləyib print yazmışdım. əlimiz vərdiş olub. hansı ki, return bin(result) yazsaydım, bir problem olmayacaqdı.
amma bu binascii modulunu öyrənmək yaxşı oldu. işi xeyli asanlaşdırır.
Sual verin
Cavab verin