猜数字游戏
import random
guess=random.randint(1,100)
print(guess)
i=1
while True:
print("第%d次,请输入数字"%i)
try:
temp=int(input())
i+=1
except ValueError:
print("input error")
continue
if temp==guess:
print("equal")
break
elif temp>guess:
print("gt")
else:
print("lt")
变量、运算符与数据类型
x,y=4,5
small=x if x<y else y
print(small)
letters=['A','B','C','D','E','F','G']
if 'A' in letters:
print("in")
if 'H' not in letters:
print("not in")
- is, is not 对比的是两个变量的内存地址
- ==, != 对比的是两个变量的值
即: - 假如比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
- 假如对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。
运算符的优先级
- 一元运算符优于二元运算符。如正负号。
- 先算术运算,后移位运算,最后位运算。例如 1 << 3 + 2 & 7等价于 (1 << (3 + 2)) & 7
- 逻辑运算最后结合
保留浮点型的小数点后 n 位。可以用 decimal 包里的 Decimal 对象和 getcontext() 方法来实现。
import decimal
from decimal import Decimal
a=decimal.getcontext().prec=4
print(Decimal(1)/Decimal(3))
- 对于数值变量, 0 , 0.0 都可认为是空的。
- 对于容器变量,里面没元素就是空的。
判断两个类型是否相同推荐使用 isinstance() 。
print()函数
- 将对象以字符串表示的方式格式化输出到流文件对象file里。其中所有非关键字参数都按 str() 方式进行转换为字符
串输出; - 关键字参数 sep 是实现分隔符,比如多个参数输出时想要输出中间的分隔字符;
- 关键字参数 end 是输出结束时的字符,默认是换行符 \n ;
- 关键字参数 file 是定义流输出的文件,可以是标准的系统输出 sys.stdout ,也可以重定义为别的文件;
- 关键字参数 flush 是立即把内容输出到流文件,不作缓存。
import decimal
from decimal import Decimal
a=decimal.getcontext().prec=4
print(Decimal(1)/Decimal(3))
元素与集合的操作:
a|(1<<i)
a&~(1<<i)
a&(1<<i)
集合之间的操作:
~a
a&b
a|b
a&(~b)
练习题
leetcode 习题 136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
尝试使用位运算解决此题。
~a
a&b
a|b
a&(~b)