- 如何算一个二进制数转成十进制:
二进制: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