python 程序控制

你。 提交于 2021-02-19 05:58:28
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

guess = eval(input())

if guess == 99:
    print("yes")


====================== RESTART: C:\Python3.7.0\test.py ======================
1
>>> 
====================== RESTART: C:\Python3.7.0\test.py ======================
99
yes



#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

guess = eval(input())

print("猜{}了".format("对" if guess == 99 else "错"))


====================== RESTART: C:\Python3.7.0\test.py ======================
1
猜错了
>>> 
====================== RESTART: C:\Python3.7.0\test.py ======================
99
猜对了
  • 用于条件组合的三个保留字
x and y逻辑与
x or y逻辑或
not x逻辑非
  • 异常处理
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

try:
    num = eval(input("please input int num:"))
    print(num ** 2)
except:
    print("not int")


====================== RESTART: C:\Python3.7.0\test.py ======================
please input int num:
not int
>>> 
====================== RESTART: C:\Python3.7.0\test.py ======================
please input int num:11
121
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

try:
    num = eval(input("please input int num:"))
    print(num ** 2)
except NameError:
    print("not int")


====================== RESTART: C:\Python3.7.0\test.py ======================
please input int num:
Traceback (most recent call last):
  File "C:\Python3.7.0\test.py", line 5, in <module>
    num = eval(input("please input int num:"))
  File "<string>", line 0
    
    ^
SyntaxError: unexpected EOF while parsing
>>> 
====================== RESTART: C:\Python3.7.0\test.py ======================
please input int num:a
not int
try:
    <语句块1>
except:
    <语句块2>
else:
    <语句块3>
finally:
    <语句块4>


- finally对应语句4一定执行
- else对应语句块3在不发生异常时执行
  • 身体质量指数BMI
BMI:Body Mass Index
BMI = 体重(kg) / 身高^2(m^2)

分类  国际BMI值  国内BMI值
偏瘦  <18.5       <18.5
正常  18.5~25     18.5~24
偏胖  25~30       24~28
肥胖  >=30        >=28

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

height,weight = eval(input("please input you height(m) and weight(kg)[,]:"))
bmi = weight /pow(height,2)
print("BMI is:{:.2f}".format(bmi))

who,nat = "",""

if bmi < 18.5:
    who,nat = "偏瘦","偏瘦"
elif 18.5 <= bmi < 24:
    who,nat = "正常","正常"
elif 24 <= bmi < 25:
    who,nat = "正常","偏胖"
elif 25 <= bmi <28:
    who,nat = "偏胖","偏胖"
elif 28 <= bmi < 30:
    who,nat = "偏胖","肥胖"
else:
    who,nat = "肥胖","肥胖"
print("BMI is:who'{0}',nat'{1}'".format(who,nat))


====================== RESTART: C:\Python3.7.0\test.py ======================
please input you height(m) and weight(kg)[,]:1.74,74
BMI is:24.44
BMI is:who'正常',nat'偏胖'
  • 遍历循环
for i in range(M,N,K):
    <语句块>

range(起始值,终止值,步长)
因为程序从0开始,终止值实际是-1

字符串遍历
>>> for i in "Python":
    print(i,end=",")

    
P,y,t,h,o,n,

列表遍历
>>> for i in [123,"AAA",234]:
    print(i,end=",")

    
123,AAA,234,

文件遍历
for line in fi:
    <语句块>

- fi是一个文件标识符,遍历其每行,产生循环
  • 无限循环
while <条件>:
    <语句块>
  • 循环控制保留字
break跳出并结束当前整个循环,执行循环后的语句(当前层)
continue结束当次循环,继续执行后续次数循环

#continue
for i in "python":
    if i == "t":
        continue
    print(i,end="")


>>> 
====================== RESTART: C:\Python3.7.0\test.py ======================
pyhon


#break
for i in "python":
    if i == "t":
        break
    print(i,end="")


====================== RESTART: C:\Python3.7.0\test.py ======================
py
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

s = "123"
while s != "":
    for c in s:
        print(c,end="")
    s = s[:-1]


====================== RESTART: C:\Python3.7.0\test.py ======================
123121



#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

s = "python"
while s != "":
    for c in s:
        if c == "t":
            break
        print(c,end="")
    s = s[:-1]


====================== RESTART: C:\Python3.7.0\test.py ======================
pypypypypyp
  • 循环高级用法
for <循环变量> in <遍历结构>:
    <语句块1>
else:
    <语句块2>

while <>:
    <语句块1>
else:
    <语句块2>

循环与else
当循环没有被break语句退出时,执行else语句块
else语句块作为正常完成循环的奖励
这里else的用法与异常处理中else用法相似
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

for c in "python":
    if c == "t":
        continue
    print(c,end="")
else:
    print("!")

====================== RESTART: C:\Python3.7.0\test.py ======================
pyhon!
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

for c in "python":
    if c == "t":
        break
    print(c,end="")
else:
    print("!")


====================== RESTART: C:\Python3.7.0\test.py ======================
py
  • random库
伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素

基本随机数函数:seed(),random()
扩展随机数函数:randint(),getrandbits(),uniform(),randrange(),choice(),shuffle()

seed(a = None)
初始化给定的随机数种子,默认当前系统时间
>>> import random
>>> random.seed(10)

random()
生成一个[0.0,1.0]之间的随机小数
>>> random.random()
0.5714025946899135

重复调用随机数相同
>>> random.seed(10)
>>> random.random()
0.5714025946899135
>>> random.seed(10)
>>> random.random()
0.5714025946899135
随机数刷新
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import random
import time

random.seed(10)

while 1:
    print("\r",random.random(),end="")
    time.sleep(0.1)

时间刷新
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import random
import time

t = time.gmtime()

while 1:
    t = time.gmtime()
    print("\r",time.strftime("%Y-%m-%d %H:%M:%S",t),end="")
    time.sleep(0.01)
  • 扩展随机数函数
randint(a,b)
生成一个[a,b]之间的整数
>>> random.randint(5,10)
9

randrange(m,n,[k])
生成一个[m,n]之间以k为步长的随机整数
>>> random.randrange(50,100,2)
76

getrandbits(k)
生成一个k比特长的随机整数
>>> random.getrandbits(16)
31625

uniform(a,b)
生成一个[a,b]之间的随机小数
>>> random.uniform(5,10)
7.890456505672352

choice(seq)
从序列seq中随机选择一个元素
>>> random.choice([1,2,3,4,5,6,7,8,9])
4

shuffle(seq)
将序列seq中元素随机排序,返回打乱后的序列
>>> s = [1,2,3,4,5,6,7,8,9]
>>> random.shuffle(s)
>>> print(s)
[6, 7, 5, 9, 4, 2, 8, 1, 3]
随机序列刷新
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import random
import time

s = [1,2,3,4,5,6,7,8,9]

while 1:
    random.shuffle(s)
    print("\r",s,end="")
    time.sleep(0.5)
  • 圆周率计算
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import random

pi = 0
N = 100

for k in range(N):
    pi += 1 / pow(16,k) * \
          (4 / (8 * k + 1) - \
           2 / (8 * k + 4) - \
           1 / (8 * k + 5) - \
           1 /(8 * k + 6))
print("pi = {}".format(pi))

====================== RESTART: C:\Python3.7.0\test.py ======================
pi = 3.141592653589793

蒙特卡罗方法
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

from random import random
from time import perf_counter

DARTS = 1000 * 1000
hits = 0.0
start = perf_counter()

for i in range(1,DARTS + 1):
    x,y = random(),random()
    dist = pow(x ** 2 + y ** 2,0.5)
    if dist < 1.0:
        hits = hits + 1
pi = 4 * (hits / DARTS)
print("pi = {}".format(pi))
print("The time is :{:.5f}s".format(perf_counter() - start))


====================== RESTART: C:\Python3.7.0\test.py ======================
pi = 3.14154
The time is :0.88162s
>>> 
====================== RESTART: C:\Python3.7.0\test.py ======================
pi = 3.139968
The time is :0.86474s
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!