注:else语句可有可无,都不会报错
根据判断条件结果而选择不同向前路径的运行方式
语法:
if 条件:
语句块
语法:
if 条件:
语句块1
else:
语句块2
判断回文字符串
str = input("请输入字符串:")
if(str == str[::-1]):
print(str + "为回文串")
else:
print(str + "不是回文串")
适用于简单表达的二分支结构
语法:
表达式1 if 条件 else 表达式2
基本语法:
if 条件1:
语句块1
elif 条件2:
语句块2
...
else:
语句块n
身体质量指数BMI
height, weight = eval(input("请输入身高(米)和体重(kg)[逗号隔开]:"))
bmi = weight / pow(height, 2)
print("BMI 数值为:{:.2f}".format(bmi))
who = ""
if bmi < 18.5:
who = "偏瘦"
elif 18.5 <= bmi <24:
who = "正常"
elif 24 <= bmi < 28:
who = "偏胖"
else:
who = "肥胖"
print("BMI指数为:国内'{0}'".format(who))
一个程序的主要运行时间都花在了循环上
遍历某个结构形成的循环运行方式
基本语法:
for 循环变量 in 遍历结构(迭代器):
语句块
作用:
从遍历结构中逐一提取元素,放在循环变量中
特点:
由保留字for和in组成,完整遍历所有元素和结束
每次循环,所获得元素放入循环变量,并执行一次语句块
注:
迭代器是Python语言中的重要机制,一个迭代器描述一个值序列,在for语句中,变量按顺序取得迭代器表示的值序列中的各个值,对每一个值都将执行语句块一次
range()函数是Python语言中的一个内置函数,调用这个函数就能产生一个迭代序列
range(n)
得到一个迭代序列:0 1 2 3 4…n-1
当n<=0时候序列为空
range(m, n)
得到的跌打序列为:m, m+1, m+2, … n-1
当m>=n的时候序列为空
range(m, n, d)
得到的序列为:m, m+d, m+2d, … ,
按步长值d递增,如果d是负数则递减,直至那个最接近但不包括n的等差值
可能产生空序列
for s in "abcde":
print(s, end=" ")
结果为:a b c d e
统计英文句子中大写字符、小写字符、数字字符的个数
str = input("请输入一句英文:")
count_upper = 0
count_lower = 0
count_didit = 0
for s in str:
if s.isupper(): count_upper = count_upper+1
if s.islower(): count_lower = count_lower+1
if s.isdigit(): count_didit = count_didit+1
print("大写字符:", count_upper)
print("小写字符:", count_lower)
print("数字字符:", count_didit)
由条件控制的循环运行方式
用一个表示逻辑条件的表达式来控制循环,当条件成立的时候反复执行循环体,直到条件不成立的时候循环结束
基本语法:
while 条件:
语句块
特点:
先求表达式的值,如果值为True就反复执行循环体语句块,直到条件不满足时结束
求非负数字序列中的最大值、最小值、平均值
count = 0
total = 0
print("请输入一个非负整数,以-1作为输入结束!")
num = int(input("输入数据:"))
min = num
max = num
while(num != -1):
count += 1
total += num
if num<min: min = num
if num>max: max = num
num = int(input("输入数据:"))
if count>0:
print("最小{}, 最大{}, 均值{:.2f}".format(min,max,total/count))
else:
print("输入为空")
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("圆周率值是:{}".format(pi))
结果为:圆周率值是:3.141592653589793
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("圆周率值是:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter()-start))
结果是:
圆周率值是:3.143824
运行时间是:1.10215s