Python基础作业

一、两个数交换,要求使用异或法完成

一、异或运算的定义

如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
在python中用^表示,如下代码(注意是二进制表示)。

1 ^ 0 #结果为1,因为1和0不同

0 ^ 1 #结果为1,因为0和1不同

1 ^ 1 #结果为0,因为1和1相同

0 ^ 0 #结果为0,因为0和0相同

二、异或运算的性质

  • 交换律:A ^ B = B ^ A;
  • 结合律:A ^ (B ^ C) = (A ^ B) ^ C;
  • 恒等律:X ^ 0 = X;
  • 归零律:X ^ X = 0;
  • 自反:A ^ B ^ B = A ^ 0 = A;
  • 对于任意的 X: X ^ (-1) = ~X;
  • 如果 A ^ B = C 成立,那么 A ^ B = C,B ^ C = A;

三、异或运算的实例

5 ^ 3 为例,理解python中异或运算的过程
首先python会将5和3转换为二进制:101^011
然后按位求异或结果:110
最后转换成十进制,结果为6

三、异或运算的应用

  • 交换两个数
a, b = 5, 3 
a = a ^ b 
b = a ^ b 
a = a ^ b 
print(a, b) 

不出所料,最后的输出是a=3和b=5。
这个用法实际上利用了异或的这个特性:

  • x^0=x
  • x^x=0

二、判断一个数,是否是2的指数

十进制 二进制
0 0
2 10
4 100
8 1000
16 10000
十进制 二进制
1 01
3 011
7 0111
15 01111

比所求数小一个数的二进制全是第一位为0后面全为1,刚刚跟2的几次幂对应的数相反,这时就可以用位运算中的与运算来解决了。

#判断一个数是否是2 的指数
num = int(input('请输入数字:'))
if num == 0 or num & (num - 1) == 0 :
    print(num,'是2的指数')
else :
    print(num,'不是2的指数')

三、给定成绩,判断用户成绩的档次

s = int(input('请输入分数'))
if s > 100 or s < 0 :
    print("请重新输入0~100分数")
else :
    score = int(s/10)
    if score == 0 :
        print('鸡蛋')
    elif score == 10 :
        print('满分')
    elif score == 9 :
        print('优秀')
    elif score == 8 :
        print('良好')
    elif score == 7 :
        print('还可以')
    elif score == 6 :
        print('合格')
    else :
        print('不及格')

四、有1、3、5、7、9组成的所有不重复的四位数之和是多少?

用数字1.3.5.7.9可以组成的数字不重复的四位数,
一共有5×4×3×2×1=120个
不管是哪一位,每个数字出现的次数相同,
因此每个数位上,每个数出现的次数=120/5=24次
因此每一数位的总和是(1+3+5+7+9)×24=600
所以所有这些数的总和=600×1111=666600

五、一个会议有12个员工,假设已有8个员工是女性,求所有员工都是女性的概率

概率不太会555

六、输入信息

在控制台上,输入如下信息
a a^2 a^3
1 1 1
2 4 8
3 9 27

#在控制台上,输入如下信息
print('a        a^2     a^3')
for a in range(1,4):
    print(a,'\t',a**2,'\t',a**3,'\n')

七、下列哪一项是“4是奇数或-9为正数”的否定

​ A、4是偶数或-9不是负数
​ B、4是奇数或-9不是负数
​ C、4是偶数和-9是负数
​ D、4是奇数和-9不是负数

C.4是奇数或-9不是负数

八、如果A是“10110110”,B是“11100000”,C是“10100000”,下面成立的是(D)

​ A、 C=A|B
​ B、 C=~A
​ C、 C=~B
​ D、 C=A&B

A|B = 1 1111 0110 A&B = 1010 0000 = C

九、判断一个整数是奇数还是偶数,至少有两种方式实现

num = int(input('请输入整数'))
if num % 2 == 0:
    print(num,'为偶数(一)')
else :
    print(num,'为奇数(一)')

if num & 1 == 0 :
    print(num,'为偶数(二)')
else :
    print(num,'为奇数(二)')

十、求矩形的面积和周长

length = int(input('请输入长'))
width = int(input('请输入宽'))
print('面积为',length*width,'周长为',(length+width)*2)

十一、根据天数(从控制台上输入)计算周数和剩余的天数

days = int(input('请输入本月已过天数'))
weeks = int(days/7)
print('今日为第',weeks,'周','剩余',30-days,'天')

十二、根据已知圆的半径radius(从控制台上输入),求其面积和周长

radius = int(input('请输入圆半径'))
print('面积为{},周长为{}'.format(radius**2*3.14,2*radius*3.14))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值