- 如何算一個二進制數轉成十進制:
二進制:1010
解析: 1 (2的3次方) 0 (2的2次方) 1 (2的1次方) 0(2的0次方)
數字的多少次方:2**3 pow(2,3)
1*2^3+0*2^2+1*2^1+0*2^0
0 長度len(s)-1-0---->2的3次方(長度-1,啟起位為0)
1 長度len(s)-1-1---->2的2次方(長度-1,啟起位為0)
2 長度len(s)-1-2---->2的1次方(長度-1,啟起位為0)
3 長度len(s)-1-3---->2的0次方(長度-1,啟起位為0)
方法:1)遍歷,獲取第一位的數寫,然后轉換成int;
2)每一位對應的2的多少次方;
3)所有值相加求和
例:
bin_num=input("請輸入一個二進制的字符串:")
bin_num_length=len(bin_num)
result=0
for i in range(bin_num_length):
result+=int(bin_num[i])*2**(bin_num_length-1-i) #取第0位的1,再*2的3次方(bin_num_length-1-i)
print(result)
- 如何算一個十進制轉成二進制:
分析:
讀一個數,一直除2再取余做為2進制的每一位上的數,一直除2,直到商為0為止。商放第一個數,余數放第2個數
a=10
l=[]
while a!=0:
l.append(str(divmod(a,2)[1]))
a=divmod(a,2)[0] #divmod 返回一個包含商和余數的元組(a // b, a % b)
print(a,str(divmod(a,2)[1]))
l=reversed(l)
print("".join(l))
>>>['1', '0', '1', '0']
- 猜數小練習,隨機生成一個整數,你輸入一個數字,判斷大於、小於、等於。
import random
guess_num=random.randint(1,10)
user_num=int(input("請輸你猜測的數字:"))
if user_num==guess_num:
print("猜中了")
elif user_num>guess_num:
print("猜大了")
else:
print("猜小了")
- 題目:使用while循環,生成隨機整數(1-10),生成3的時候,結束 循環,否則 繼續循環執行
import random
while 1:
random_num=random.randint(1,10)
print(random_num)
if random_num==3:
break