美文网首页
Python基础总结(三)(选择、循环)

Python基础总结(三)(选择、循环)

作者: TryEnough | 来源:发表于2016-11-02 11:20 被阅读106次

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))

相关文章

网友评论

      本文标题:Python基础总结(三)(选择、循环)

      本文链接:https://www.haomeiwen.com/subject/wrdvuttx.html