Python基本运算、算术运算、赋值运算、按位运算的应用

计算器内部算法的练习:

1、熟练基本运算、算术运算、赋值运算、按位运算

2、定义函数、while语法

3、检验字符串中是否包含另一字符串,用in

 

1.基本运算符

基本运算符:+ - * / ,和普通数学运算符一样,容易理解

2.算术运算符

%,取模,即余数,例如:5%3=2

**,取幂,即多少次方,例如:2**3=8

//,取整除数,例如:10//3=3

3.赋值运算符

在每个基本运算符和算术运算符后边加上=,即+=,-=,*=,/=,%=,**=,//=

意思为与自身进行运算,例如:i*=3,等效于i=i*3;i**=3,等效于i=i**3

4.按位运算

底层是将运算数先转换成二进制,再进行运算。具体有以下的位运算

&,与运算。测试以下看看效果

i = 11
j = 12
result = i&j
print(bin(i))
print(bin(j))
print(result)
print(bin(result))

先将i,j都转换成二进制打印,方便观察规律

0b1011

0b1100

0b1000

解析:0b 1(两个1变成1)0(一个1一个0变成0)0(一个1一个0变成0)0(一个1一个0变成0)

收获:&运算,将上下相同为1的位,等于1;不同的位(一个1,一个0),等于0

|,或运算

i = 10
j = 8
result = i|j
print(bin(i))
print(bin(j))
print(result)
print(bin(result))

0b1010

0b1000

0b1010

解析:0b 1(两个1变成1)0(两个0变成0)1(一个1一个0变成1)0(两个0变成0)

收获:|运算,将含有1(一个1或者两个都是1)的位,等于1;两个都是0的位,等于0

^,异或运算

i = 2
j = 3
result = i^j
print(bin(i))
print(bin(j))
print(result)
print(bin(result))

0b10

0b11

0b01(补一位0)

解析:0b 0(两个1变成0)1(一个0一个1变成1)

收获:^运算,将上下相同为1的位,等于0;不同的位(一个1,一个0),等于1。这个和&与运算有点相反

~,取反运算

i = 2
j = ~i
print(j)

收获:相比网上其他的解释,可以这么理解比较简便,2,取反=-2,再-1

<<,左取运算符

i = 2
j = i<<2
print(bin(i))
print(bin(j))

0b10

0b1000

收获:左取运算底层也是二进制的运算,往左移动两位,空余的部分则用0填充。

>>,右取运算符

i = 13
j = i>>3
print(bin(i))
print(bin(j))

0b1101

0b1___

收获:和左取运算符相似,右取运算符往右移动3位时,像是从右边被吞取了3位(即101被吞掉),剩下0b1

5.运算符的应用练习

用相对较笨的if elif方法简单实现计算器的算法应用,一开始目的为了练习各运算符的编写,后边写着写着想实现不断地调用运算函数,就想了下用while循环来测试全部运算符。

同时也碰到了字符串判断包含的用法in,以及发现打印结果时需要强制转换str;

其中将变量判断是否含有小数点. ,目的为了使整数和浮点数类型也能进行运算。

# 运算函数
def calculate():
    # 定义两个值的输入变量
    first_number = input("请输入第一个数字:")
    operation = input("请输入运算符:")
    second_number = input("请输入第二个数字:")
    # 转换类型
    if '.' in first_number or '.' in second_number:
        # first_number, second_number = float(first_number), float(second_number)
        first_number = float(first_number)
        second_number = float(second_number)
    else:
        # first_number, second_number = int(first_number), int(second_number)
        first_number = int(first_number)
        second_number = int(second_number)
    # 定义运算符号
    if  operation == "+":
        result = first_number + second_number
    elif  operation == "-":
        result = first_number - second_number
    elif  operation == "*":
        result = first_number * second_number
    elif  operation == "/":
        result = first_number / second_number
    elif  operation == "%":
        result = first_number % second_number
    elif  operation == "**":
        result = first_number ** second_number
    elif  operation == "//":
        result = first_number // second_number
    elif  operation == "&":
        result = first_number & second_number
    elif  operation == "|":
        result = first_number | second_number
    elif  operation == "^":
        result = first_number ^ second_number
    print("运算结果是:" + str(result))
    return

# 是否需要继续运算
def cal_while():
    while  True:
        calculate()
        if  input("请问是否继续运算:") in ('yes','是的','YES','好','ok'):
            continue
        else:
            print("运算结束!")
            break
if __name__ == '__main__':
    cal_while()

总结:练习了才会记得,练习了才会碰到更多的点,驱动你去找到解决方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值