01、 a, b = input().split()
一行接收多个输入值
while 1:
try:
a, b = input("请输入,以 分开 : ").split()
print(a, b)
except Exception as e:
print(e)
输入值太多会有问题
请输入,以 分开 : hello world
a = hello, b = world
请输入,以 分开 : i am CatF
too many values to unpack (expected 2)
请输入,以 分开 : lll lll lll lll
too many values to unpack (expected 2)
请输入,以 分开 :
猜想能否有一种接受多个赋值的方法:
尝试:
*a = input("清输入,以 分开 : ").split()
print(*a)
失败
File "E:\1coding\自学\lab.py", line 3
*a = input("清输入,以 分开 : ").split()
^
SyntaxError: starred assignment target must be in a list or tuple
a, *b = input("请输入,以 分开 : ").split()
print(a, *b)
请输入,以 分开 : 可以 了吗
可以 了吗
请输入,以 分开 : 两个字 可以 了诶
两个字 可以 了诶
请输入,以 分开 : n i c e j o b !
n i c e j o b !
补充:
如果只需要分割出来的第一个值,后面的忽略,或者是要第一个和最后一个值,可以用以下方式表示,当然,哪个下划线不用下划线也是可以的,比如用args
a, *_ = input("请输入,以 分开 : ").split()
print(a)
a, *_, c = input("请输入,以 分开 : ").split()
print(a, c)
02、 locals()[想要得到的变量名]
动态生成变量名
困扰许久的问题,也没有许久吧,突然想起来就试一试自己的想法,失败就接着手头的事,这次看到js可以动态生成变量,果断google了一下Python的,发现locals()的妙用。
for i in range(5):
locals()['var' + str(i)] = i
print('var'+str(i)+'=', locals()['var' + str(i)])
能够动态生成以下变量,并赋值为相对应的 i的值。
var0= 0
var1= 1
var2= 2
var3= 3
var4= 4
解放双手,开拓思想,真是门强大的语言。
03、for _ in range(10)
生成随机字符串
''.join(str(random.choice(range(10))) for _ in range(9))
# 生成9次str(...)
04、strip()
去除开头结尾的某些内容
一直想当然的以为strip()
就是简单的用于去除头尾的空格,真正遇到这道题的时候却发现,自己真是一知半解
strip(args)
中的参数,实际上是按字符划分的选项
举个例子:
In [9]: string = '123abcder123'
In [11]: string.strip('12')
Out[11]: '3abcder123'
In [12]: string.strip('121')
Out[12]: '3abcder123'
In [13]: string.strip('123')
Out[13]: 'abcder'
可以看出,strip
函数从字符串string
的首尾开始,移除了包含在参数('1', '2')
的字符,直到第一个不在参数中的值停止。
In [13]: string.strip('123')
Out[13]: 'abcder'
# 头尾对 1,2,3进行移除,到第一个不为1、2、3的值停止。
同样,lstrip()
,rstrip()
也是一样的,只不过一个只对左边,一个只对右边进行移除。
5、and_or
判断与输出
这两天看代码的时候看到一种and
,or
使用的技巧,看起来很酷。
像这样:
order_sort = time_sort == 'm' and 'id' or '-id'
通过前面判断语句来决定是id
或-id
。
下面来详解一下。
利用python的and
和or
的机制
In [18]: 1 and 2
Out[18]: 2
In [33]: 2 and 1
Out[33]: 1
In [31]: 1 or 0
Out[31]: 1
In [32]: 0 or 1
Out[32]: 1
我觉得这机制应该是利用了短路逻辑
and
需要判断前后是否都为真,所以当and
前面的值为假,则直接输出这个假的值
In [21]: False and 2
Out[21]: False
In [22]: 0 and 1
Out[22]: 0
and
前面为真,则输出后面的值
In [26]: 1 and False
Out[26]: False
In [27]: 1 and 0
Out[27]: 0
In [28]: 1 and 2
Out[28]: 2
or
需要判断是否有一个真值,如果or前面为真则直接返回,
In [30]: 1 or 2
Out[30]: 1
In [31]: 1 or 0
Out[31]: 1
为假则返回后面的值
In [34]: 0 or 3
Out[34]: 3
In [35]: 0 or False
Out[35]: False
其实这和x if x < y else y
的方式很相似,不过,用x < y and x or y
的方式看起来真的很酷。
待续。。。