7-49 解析车间里的阀门状态 (高教社,《Python编程基础及应用》习题5-4) (4 分)
CPU通过一个8位IO口读取了1个字节的内容,现在存储在一个bytes对象里,示例: b'\x45';这8位分 别代表了车间里8个阀门的当前状态,1表示该阀门通,0表示该阀门断。请设计一个程序,从bytes对象解析出8个 阀门的当前状态,True表示通,False表示断。这8个状态应组织在一个列表中,其中,第i个元素对应输入字节的第i 位。
输出格式示例:[True, False, False, True, True,True,False,False]
输入格式:
形如 b'\x45'的单字节bytes。(注意是16进制)
输出格式:
包含8个布尔值的列表。其中,第i个元素代表输入字节的第i位(从低到高分别是0 ~ 7位)。
[True, False, True, False, False, False, True, False]
输入样例:
b'\x01'
结尾无空行
输出样例:
[True, False, False, False, False, False, False, False]
结尾无空行
代码如下:
n=[]
n=input()
n=n[4:-1]
# print(n)
n1=int(n,16)
# print(n1)
n2=bin(n1)
n3=list(n2)
# print(n3)
n3.reverse()
j=0
m=[]
for i in n3:
j+=1
if i=="1":
m.append(True)
elif i=="b":
break
elif i=="0":
m.append(False)
# print(j)
if j<9:
for l in range(j-1,8):
m.append(False)
# print(n3)
print(m)
注意append(里加不加“”是有区别的)
7-22 输出全排列 (20 分)
输入整数n(3<=n<=7),编写程序输出1,2,...,n
整数的全排列,按字典序输出。
输入格式:
一行输入正整数n。
输出格式:
按字典序输出1到n的全排列。每种排列占一行,数字间无空格。
输入样例:
在这里给出一组输入。例如:
3
结尾无空行
输出样例:
在这里给出相应的输出。例如:
123
132
213
231
312
321
结尾无空行
代码如下:
import itertools
# list(itertools.permutations([1,2,3],2))
n=int(input())
tmp=[]
for i in range(1,n+1):
tmp.append(i)
# print(tmp)
kk=list(itertools.permutations(tmp,n))
for j in kk:
for k in j:
print(k,end="")
print()
# print(list(itertools.permutations([1, 2, 3], 3)))
这里用到了一个itertools标准库。