To the world you may be one person, but to one person you may be the world.
可以使用int将布尔值转换为整数
int(true) = 1
int(false) = 0
可以使用bool函数将数字值转换成布尔值
bool(0) = false
bool(4) = true
随机数
函数randint(a, b) 可以用来产生一个a和b之间且包含a和b的随机整数,此函数在random模块中。
函数randrange(a, b)产生一个在a、b-1之间的随机数,等同于randint(a, b - 1)
函数random() 产生一个0<=r<=1.0的随机浮点数r(不包括1.0)
给出一个好玩的例子;计算生日日期(数学原理这里就不讲了,想知道的给我留言:))
#计算生日日期
day =0
question1 ="你的生日日期在这里面么?\n"+ \
"1 3 5 7\n"+ \
"9 11 13 15\n"+ \
"17 19 21 23\n"+ \
"25 27 29 31\n"+ \
"请输入0代表没有,输入1代表有"
answer =eval(input(question1))
ifanswer ==1:
day +=1
question2 ="你的生日日期在这里面么?\n"+ \
"2 3 6 7\n"+ \
"10 11 14 15\n"+ \
"18 19 22 23\n"+ \
"26 27 30 31\n"+ \
"请输入0代表没有,输入1代表有"
answer =eval(input(question2))
ifanswer ==1:
day +=2
question3 ="你的生日日期在这里面么?\n"+ \
"4 5 6 7\n"+ \
"12 13 14 15\n"+ \
"20 21 22 23\n"+ \
"28 29 30 31\n"+ \
"请输入0代表没有,输入1代表有"
answer =eval(input(question3))
ifanswer ==1:
day +=4
question4 ="你的生日日期在这里面么?\n"+ \
"8 9 10 11\n"+ \
"12 13 14 15\n"+ \
"24 25 26 27\n"+ \
"28 29 30 31\n"+ \
"请输入0代表没有,输入1代表有"
answer =eval(input(question4))
ifanswer ==1:
day +=8
question5 ="你的生日日期在这里面么?\n"+ \
"16 17 18 19\n"+ \
"20 21 22 23\n"+ \
"24 25 26 27\n"+ \
"28 29 30 31\n"+ \
"请输入0代表没有,输入1代表有"
answer =eval(input(question5))
ifanswer ==1:
day +=16
print("\n你的生日日期是:"+str(day) +"!")
运算符的优先级(从高到低)
+,- (一元加减运算符)
** (指数运算符)
not
*、/、 //、% (乘、除、整除、余数)
+、- (二元加减)
<、<= 、>、>= (比较)
==、!=(相等运算符)
and
or
=、+=、-=、*=、/=、//=、%=(赋值运算符)
⚠️注意在循环中不要使用浮点数值来比较相等作为控制条件,因为浮点数运算是近似的。如下例子:
#这个程序看着挺正常的,但是其实会一直运行在循环中,因为while item !=0这个判断条件是不成立的
item=1
sum =0
while item !=0:
item -=0.1
sum+= item
print(sum)
那么遇到这种情况的话,可以考虑是用for循环或者使用一个整数计数来充当哨兵值解决这个问题。
输入输出重定向
推荐学习博客:
http://www.cnblogs.com/turtle-fly/p/3280519.html
将输出重定向到out.log文件,同时也在控制台(屏幕)打印
import sys
class__redirection__:
def__init__(self):
self.buff =''
self.__console__ = sys.stdout
defwrite(self, output_stream):
self.buff += output_stream
defto_console(self):
sys.stdout =self.__console__
print(self.buff)
defto_file(self, file_path):
f =open(file_path,'w')
sys.stdout = f
print(self.buff)
f.close()
defflush(self):
self.buff =''
defreset(self):
sys.stdout =self.__console__
if__name__ =="__main__":
# redirection
r_obj = __redirection__()
sys.stdout = r_obj
# get output stream
print('hello')
print('there')
# redirect to console
r_obj.to_console()
# redirect to file
r_obj.to_file('out.log')
# flush buffer
r_obj.flush()
# reset
r_obj.reset()
for循环
for v in range(4,8):
print(v)
结果是:4,5,6,7
其中,range函数有多种形式,如:range(a) 与range(0, a)功能一样,range(a, b, k)中k代表步长,k也可以是负数。但是range中的数必须为整数。
求最大公约数
#欧几里得算法求最大公约数
#递归
def Gcd(a, b):
if b ==0:
returna
return Gcd(b, a % b)
print(Gcd(2,4))