Python中[我认为]不常见的一些用法(1)

①Python允许用户以";"来分隔表达式,以便连续申明不同的程序语句

eg:

>>> Salary = 25000;sum1 = 0
>>> print(Salary,sum1)
25000 0
>>> 

②sep来设置分隔字符

eg:

>>> print("《大学》","《中庸》","《论语》","《孟子》",sep = "、")
《大学》、《中庸》、《论语》、《孟子》
>>> 

③进制之间的转化:

eg:

ival = input("请输入八进制数值:")
print("您所输入的八进制数值,其对应的十进制数是:%d" %int(ival,8))

#其实,%d是转化的目标进制,%int(ival,8)后面的8代表的是输入的数值所对应的的进制,换做是其他的数也是一样的

最后,显示的结果是:(我随便取得一个数值)

④位运算(二进制位逐位进行运算),整数--->二进制,bin()

#操作数1 ^ 操作数2

#如果两者的值是相同的情况下,返回的数值是0,否则返回的数值是1


>>> print(1 ^ 1)
0
>>> print(True ^ 0)
1
>>> 
num1 = 9;num2 = 10
print(bin(num1))
print(bin(num2))
#使用bin()函数将num1和num2转化为二进制数值
print(num1 & num2)

最后的显示结果是:

这个二进制之间的具体的运算是:从最后一位开始,看具体的操作进行相应的操作,比如,我们这里是使用&--->即逻辑与运算,如果是“全假、一真一假”则会返回的是0,否则就是1,所以从最低位开始进行的话,一直算到最高位,发现是0b1000,输出时默认是十进制,也就是8咯,这里可以看到我们的其他进制之间的运算明显跟我们的十进制是不相同的。

左移(<<)和右移(>>)运算符:

num1 = 125
num2 = 98475
print(bin(num1))
print(bin(num1<<2))
print(bin(num2))
print(bin(num2>>3))

显示结果是:

所以,我琢磨着:左移就是在原来的基础上添加0,右移就是在原有的基础上去掉最后面的几位

⑤if语句的新型用法:

print("1.80分以上,2.60~69,3.59以下")
ch = input("请输入等级分数:")
if ch =="1":
    print("还好")
elif ch == "2":
    print("60分万岁--->大学的真谛")
else:
    print("革命尚未成功,同志仍需努力!")
    

显示结果:

我在今天才知道,if语句居然可以这样直接匹配,那这样以后写代码岂不是不要更舒服?

⑥字符串的一些我可能忘记的方法:

count():找出字符串出现的次数
split():根据sep设置字符来分隔字符串
find():检测字符串中是否包含字符串str并返回其位置

eg:

Teacher_zhang = "张老师长得那么高,有那么帅,最关键的是还tm那么有钱,哪个小妹妹敢不沦陷?"
a = Teacher_zhang.count("那")
print(a)
print(Teacher_zhang.split(sep = ','))
c = Teacher_zhang.find("有")
print(c)

显示结果是:

致敬--->天天拽我被子喊我起床的张老师---<

⑥元组的另一种形式:

import sys
tup = '1001','BMW',2019
print(tup)

元组居然可以这么写???,不过我觉着先了解吧,这样写肯定不规范

('1001', 'BMW', 2019)

⑦在Python语言中,当传递的数据是不可变对象时,在传递参数时1,会先复制一份再进行传递,但是若所传递的数据是可变对象,则传递参数时,直接以内存地址来传递,这根我们C语言的指针很像

先看一下不是可变对象时的情况:

def fun(a,b):
    a,b = b,a
    print("函数内交换数值后:a = %d,\tb = %d\n"%(a,b))
a = 10
b = 15
print("调用函数前的数值:a = %d,\tb = %d\n"%(a,b))
print('\n-----------------------------------------')

fun(a,b)
print("\n-----------------------------------------")
print("调用函数后的数值:a = %d,\tb = %d\n"%(a,b))

最后的显示结果是:

所以,是没有作用的

但是,如果是参数时可变对象的时候,结果却不一样了:

def change(data):
    data[0],data[1] = data[1],data[0]
    print("函数内交换位置后:")
    for i in range(1,2):
        print("data[%d] = %3d" %(i,data[i]))
data = [16,25]
print("原始数据为:")
for i in range(2):
    print("data[%d] = %3d" %(i,data[i]))
print("\n-----------------------------------------------")
change(data)
print("\n-----------------------------------------------")
print("排序后数据是:")
for i in range(2):
    print("data[%d] = %3d" %(i,data[i]))

显示结果是:

最后,致敬张老师,用着张老师的电脑,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值