功能体,是我对编程语言中一些语法格式与特殊语句块的称呼。同时,也是我对其的一种分类手段。例如,我认为“循环语句”和“选择语句”就是属于功能体的一种。
文章目录
- 输入格式控制
- 输出格式控制
- 选择流程控制
- example code
- 循环流程控制
- 循环:while
- 循环:for
- break
- continue
- example code
输入格式控制
# 格式化控制输入
strA = input("input strA:")
strB = input("input strB:")
intA = int(input("input intA:")) # 强制类型转化为int型;因为对于用户输入的总是以字符串来对待的;
# 如果不进行强制类型转换,则在格式输出的时候就会报错;
input明文和密文
# 用户输入
# 方式1
input_str = input("请输入:\n")
print("你刚刚输入的是:%s" % input_str)
# 方式2
import getpass # 输入不可见式的密码
passwd = getpass.getpass("请输入:\n")
print(passwd)
输出格式控制
info_a = '''
strA is: %s
strB is: %s
intA is: %d # 格式控制符,类似于C
''' % (strA, strB, intA) # 代码的格式化排版
info_b = '''
strA 是:{_strA}
strB 是:{_strB}
intC 是:{_intA}
'''.format(_strA=strA, _strB=strB, _intA=intA) # 相当于是把x的值赋给_x;
info_c = '''
strA 是:{0}
strB 是:{1}
intC 是:{2}
'''.format(strA, strB, intA) # 给参数赋值
print(info)
str = "test"
print("this is a %s" % str)
print("this is a {_str}".format(_str=str))
print("this is a {0}".format(str))
print('hello', end='') # 不换行输出
输出控制中的占位符
%c
:格式化字符及其ASCII码%s
:格式化字符串%d
:格式化整数%u
:格式化无符号整型%o
:格式化无符号八进制数%x
:格式化无符号十六进制数%X
:格式化无符号十六进制数(大写)%f
:格式化浮点数字,可指定小数点后的精度%e
:用科学计数法格式化浮点数%E
:作用同%e,用科学计数法格式化浮点数%g
:%f和%e的简写%G
:%f 和 %E的简写%p
:用十六进制数格式化变量的地址
选择流程控制
第一种形式:
if expression:
statements...
第二种形式:
if expression
statements...
else:
statements...
第三种形式:
if expression:
statements...
elif expression:
statements...
...//可以有零条或多条elif语句
else:
statement...
PS:Python不支持switch语句,因此判断结果对应多种执行方式时,只能用elif来做。
注意语法:
1、不要忘记缩进(一个Tab),从而形成代码块;一个代码块就如同C语言中的一个大括号覆盖的;
2、不要随意缩进;同一个代码块中的应该保持缩进一致;
3、不要遗忘冒号;
4、if 条件可以是任意类型,但” False、None、0、""、()、[]、{}”, 作为 bool 表达式时,会被解释器当作 False 处理;
example code
**功能体:**选择结构例子示例
'''
功能:身份验证,验证字符串是否相等
'''
username = input('Input your user name:')
password = input('Input your password:')
''' 输入密码时,终端没有回显
import getpass
password = getpass.getpass('请输入口令: ')
'''
if username == 'admin' and password == '123':
print('身份验证成功!')
else:
print('身份验证成功!')
'''
功能:求分段函数的值
3x - 5 (x > 1)
f(x) = x + 2 (-1 <= x <= 1)
5x + 3 (x < -1)
'''
x = float(input('输入一个数字:')) # 经过控制台输入的都是str格式,强转换为float
if x > 1:
y = 3 * x -5
elif x >= -1:
y = x + 2
else:
y = 5 * x + 3
print('f(%.2f) = %.2f' %(x,y)) # 格式输出方式,保留float两位小数,注意格式:%.2f
'''输出:
输入一个数字:2
f(2.00) = 1.00
'''
'''
功能:转换英制单位英寸 和 公制单位厘米
算法:1英寸=2.54厘米
'''
value = float(input('请输入长度:'))
unit = input('请输入单位(英寸/in 厘米/cm):')
if unit == 'in' or unit == '英寸':
print('%f英寸 = %f厘米' % (value, value * 2.54))
elif unit == '厘米' or unit == 'cm':
print('%f厘米 = %f英寸' % (value, value / 2.54))
else:
print('你的输入不合法!')
'''
功能:掷骰子
核心:random模块randint函数
'''
from random import randint
a = randint(1, 6) # 随机产生[1,6]之间的整数
print('第一次掷得:%d' % a)
b = randint(1, 6)
print('第二次掷得:%d' % b)
c = randint(1, 6)
print('第三次掷得:%d' % c)
'''
功能:百分制成绩转等级制
90分以上 --> A
80分~89分 --> B
70分~79分 --> C
60分~69分 --> D
60分以下 --> E
'''
score = float(input('请输入分数:'))
if score >= 90:
grade = 'A' # 等级
elif score >=80: # 为什么不是score >= 80 and score <90? 因为上个if已经把<90排除了;
grade = 'B'
elif score >=70:
grade = 'C'
elif score >=60:
grade = 'D'
else:
grade = 'F'
print('该分数对应的等级是', grade)
'''
功能:判断三条边能否构成三角形
算法:任意两边之和大于第三边,任意两边只差小于第三边
'''
import math # 导入math模块
a = float(input('a='))
b = float(input('b='))
c = float(input('c='))
if a + b > c and a + c > b and b + c > a:
print('能构成三角形!')
else:
print('不能构成三角形!')
循环流程控制
Python中没有do while循环。
循环:while
# 条件循环
count = 0
while count < 3 :
print("count is :", count)
count += 1
# 无线循环,通常要搭配break使其更具有实际意义;
while True:
print("LOOP FOREVER.")
# while……else……当循环条件为 False 时,程序会执行 else 代码块。
count = 0
while count < 5 :
print("now count is ", count)
count += 1
if count == 4:
print("此时的count是4,break!则不会执行与while搭配的else代码!")
break
else:
print("正常完成了while循环,并执行了else代码。")
循环:for
for i in "I_love_python.": # 语法,冒号;
print(i) # 每执行一次,就换行;从这个串里读取每个字母;
print("done!")
s = ['kyle', 'shawe', 'haha', 'nihao']
for i in s: # 从列表中的变量;
print(i)
break
**循环中的break:**一个break只能结束距离break最近的循环;
for i in range(0, 10) :
print("i的值是: ", i)
if i == 2:
break # 执行该语句时将结束循环
# 对于带 else 块的 for 循环,如果使用 break 强行中止循环,程序将不会执行 else 块。
for i in range(0, 10) :
print("i的值是: ", i)
if i == 2 :
# 执行该语句时将结束循环
break
else:
print('else块: ', i)
continue
for i in range(0, 3):
if i == 1:
continue # 忽略本次循环的剩下语句
print ("i=: ", i)
'''output:由于i等于1时被忽略跳过了,故没有被输出
i=: 0
i=: 2
'''
PS: 循环与else
无论是 while 循环还是 for 循环,其后都可以紧跟着一个 else 代码块。
它的作用是,当循环条件为 False 跳出循环时,程序会最先执行 else 代码块中的代码。
example code
功能体:while-example code
# range函数说明:
# range(101) 依次产生[0,100]的整数序列;顾头不顾尾;
# range(1, 100) [1,99]
# range(1, 100, 2) 参数分别是:起始值,尾,步长
'''
功能:猜数字
核心:random模块下的randint函数
'''
import random
answer = random.randint(1, 100) # answerd∈[1,100]的随机数
counter = 0 # 计算猜了多少次
print(answer)
while True:
counter += 1
number = int(input('输入一个整数:'))
if number < answer:
print('小了')
elif number > answer:
print('大了')
else:
print('恭喜,猜对了!')
break # 终结本个while循环
print('总共猜了%d次。' % counter)
功能体for-example code
# range函数说明:
# range(101) 依次产生[0,100]的整数序列;顾头不顾尾;
# range(1, 100) [1,99]
# range(1, 100, 2) 参数分别是:起始值,尾,步长
'''功能:求1-100之间的偶数求和
核心:for-in;range
'''
sum = 0
for x in range(2, 101, 2):
sum += x
print('1-100之间的偶数求和为:', sum)
'''低效的代码
sum = 0
for x in range(1,101):
if x % 2 == 0:
sum += x
print(sum)
'''
'''
功能:输出九九乘法表
核心:for-in; range()
'''
for i in range(1, 10):
for j in range(1, i+1):
print('%dx%d=%d' % (i, j, i*j), end='\t')
print()
'''
功能:判断素数
算法:一个数的因数有且仅有1和它本身
1) n都不能被[3,n)内的奇数整除;为什么是3开始?因为一个数如果是质数,其必定是奇数;
2) n都不能被[3,n/2]内的奇数整除;
3) n都不能被[3,sqrt(n)]内的奇数整除;
'''
from math import sqrt
num = int(input('输入一个整数:'))
if num <= 0:
print('输入的整数不合法!')
exit()
end = int(sqrt(num))
is_prime = True
for x in range(3, end+1):
if num % x ==0:
is_prime = False
break
if is_prime == True:
print('是素数。')
else:
print('不是素数。')
'''
功能:两个数的最大公因数、最小公倍数
核心:最小公倍数 = 两数之积/最大公因数
算法: 1) 欧几里得-辗转相除法
2) 试商法
'''
a = int(input('输入整数a:'))
b = int(input('输入整数b:'))
product = a * b
if a < b: # 使得a>b
t = a
a = b
b = t
# while a % b: # 辗转相除法
# t = a
# a = b
# b = t % b
# print('最大公因数:%d,最小公倍数是:%d' % (b, product / b))
for i in range(b, 0, -1): # 试商法;使range递减
if a % i == 0:
print('最大公因数:%d,最小公倍数是:%d' % (i, product / i))
break