注释:# 注释的内容
数字:
- 整数:不区分int和long
- 进制:0xa、0o10、0b10
- bool:True、False
- 浮点数:3.1415
- 复数:1 + 2j
字符串:
- 使用单双引号引用都可以,建议使用单引号,'python'或"python"
- '''和"""单双三引号,可以多行注释,可以在其中自由使用单双引号
- 在字符串前面加上r或R前缀,表示该字符串不做特殊处理
缩进:约定使用4个空格缩进
续行:
- 在行尾使用\
- 如果使用各种括号,认为括号内是一个整体,内部跨行不用\
标识符:
- 只能包含字母、数字或下划线
- 只能以字母或下划线开头
- 不能是Python的关键字,例如def、class不能作为标识符
- Python大小写敏感
- 不允许使用中文
- 不允许使用歧义单词,例如class_
- Python中不要随便使用下划线开头的标识符
常量:
- 一旦赋值就不能改变值的标识符
- Python中无法定义常量
变量:赋值后,可以改变值的标识符
Python的语言类型:是动态、强类型语言
静态编译语言:
- 实现声明变量类型,类型不能再改变
- 编译时检查
动态编译语言:变量不需要事先声明,也不需要指定类型
强类型语言:不同类型之间操作,必须强制类型转换为同一类型,例如print('a' + 1)
弱类型语言:不同类型之间操作,自动隐式转换
算数运算符:+ - * / // % **
说明:/自然除,结果为浮点数,//整除,结果为整数
位运算符:& | ~ ^ << >>
比较运算符:
- == != > < >= <=
- 返回一个bool值(True、False)
- 1 < '1' 1 == '1'
- 链式比较操作符:4 > 3 > 2
逻辑运算符:
- 与and 或or 非not
- 短路运算符:
- and:如果第一个表达式为False,后面就没有计算的必要了,整个逻辑表达式一定为False
- or:如果第一个表达式为True,后面就没有计算的必要了,整个逻辑表达式一定为True
赋值运算符:
- a = min(3, 5)
- += -= *= /= %=等
- x = y = z = 10说明:Python中没有++、--
成员运算符:in、not in
身份运算符:is、is not
运算符优先级:算数运算符 > 位运算符 > 身份运算符> 成员运算符> 逻辑运算符
说明:遇到长表达式,可以多用括号
表达式:由数字、符号、括号和变量等组成
- 算数表达式
- 逻辑表达式
- 赋值表达式:Python中,赋值即定义,如果一个变量已经定义,赋值相当于重新定义
程序控制:
- 顺序:按照先后顺序一条条执行
- 分支:根据不同的情况判断,条件满足时执行某条件下的语句
- 循环:条件满足就反复执行,不满足就不执行或不再执行
单分支结构:
if语句:
if condition:
代码块
代码块:
- 类似于if语句冒号后面就是一个语句块
- if、for、def、class等
真值表:
对象/常量
值
''空字符串
假
' '
真
'string'
真
0
假
>=1
真
<=-1
真
()空元组
假
[]空列表
假
{}空字典
假
None
假
多分支结构:
if...elif...else语句:
if condition1:代码块1
elif condition2:
代码块2
elif condition3:
代码块3
...
else:
代码块4
分支嵌套:
代码块1
else:
if condition2:
代码块2
elif condition3:
代码块3
elif condition4:
代码块4
...
else:
代码块5
嵌套结构,可以是分支、循环的嵌套,可以互相嵌套多层
input()函数获取键盘输入,变量类型为字符串
while循环:
while condition:
block
for循环:
# 当可迭代对象中有元素可以迭代,进入循环体,执行block
for element in iteratable:
block
循环continue语句:中断当前循环的当次执行,继续下一次循环
循环break语句:终止当前循环
总结:
- continue和break是循环的控制语句,只影响当前循环,包括while、for循环
- 如果循环嵌套,continue和break也只影响语句块所在的那一层循环
- continue和break不是跳出语句块,所以if condition: break不是跳出if,而是终止if外的break所在的循环
循环else子句:
while condition:block
else:
block
或
for element in iteratable:block
else:
block
说明:如果循环正常执行完毕,会执行else子句;如果使用break终止,else子句将不会执行
简单代码示例:
range()函数使用:
for i in range(3):print(i, end=' ')
print()
for i in range(0, 3):
print(i, end=' ')
print()
for i in range(0, 6, 2):
print(i, end=' ')
print()
for i in range(3, 0, -1):
print(i, end=' ')
print()
for ... else ...使用:
for i in range(3):print(i)
else:
print('done')for i in range(10):
if i > 5:
break
else:
print('ok')
无结果输出
打印10以内的奇数:
for i in range(1, 10, 2):print(i, end='、')
或
for i in range(1, 10):if i % 2 == 0:
continue
print(i, end='、')
字符串拼接:
str1 = 'ABCD'str2 = "EFGH"
print(str1 + str2)
print(type(str1 + str2))
给定一个不超过5位的正整数,判断其位数:
num = int(input('请输入一个不超过5位的正整数:'))if num <= 0 or num > 99999:
print('给出的数字不符合要求')
else:
if num <= 9:
print('输入的是1位的正整数')
elif num <= 99:
print('输入的是2位的正整数')
elif num <= 999:
print('输入的是3位的正整数')
elif num <= 9999:
print('输入的是4位的正整数')
else:
print('输入的是5位的正整数')
或
num = int(input('请输入一个不超过5位的正整数:'))if num >= 1000:
if num >= 10000:
print(5)
else:
print(4)
else:
if num >= 100:
print(3)
elif num >= 10:
print(2)
else:
print(1)
给定一个不超过5位的正整数,判断其位数及每位对应的数值:
while True:val = input('请输入一个不超过5位的正整数:')
if val == 'q' or val == 'quit':
print('退出程序')
break
if not val.isdigit():
print('请输入大于0的正整数')
continue
num = int(val)
if num == 0 or num >= 100000:
print('输入的数字不在范围内')
continue
if num >= 1000:
if num >= 10000:
print('输入的数字为5位数,万位数' + str(num // 10000) + ',千位数' + str(num // 1000 % 10) + ',百位数' + str(num // 100 % 10) + ',十位数' + str(num // 10 % 10) + ',个位数' + str(num % 10))
else:
print('输入的数字为4位数,千位数' + str(num // 1000) + ',百位数' + str(num // 100 % 10) + ',十位数' + str(num // 10 % 10) + ',个位数' + str(num % 10))
else:
if num >= 100:
print('输入的数字为3位数,百位数' + str(num // 100) + ',十位数' + str(num // 10 % 10) + ',个位数' + str(num % 10))
elif num >= 10:
print('输入的数字为2位数,十位数' + str(num // 10) + ',个位数' + str(num % 10))
else:
print('输入的数字为个位数' + str(num))
或
num1 = num2 = int(input('请输入一个不超过5位的正整数:'))if num1 >= 1000:
if num1 >= 10000:
res = 5
else:
res = 4
else:
if num1 >= 100:
res = 3
elif num1 >= 10:
res = 2
else:
res = 1
print('该正整数有' + str(res) + '位')
print('最高位到个位依次为:', end='')
for i in range(1, res + 1):
print(num1 // (10 ** (res - i)), end=' ')
num1 = num1 % (10 ** (res - i))
print('\n个位到最高位依次为:', end='')
for _ in range(res):
print(num2 % 10, end=' ')
num2 = (num2 - num2 % 10) // 10
给定一个正整数,判断其位数:
num = int(input('请输入一个正整数:'))count = 1
while True:
num = num // 10
if num == 0:
break
count += 1
print(str(count) + '位数')
打印一个边长为n的实心正方形:
val = input('请输入正方形边长:')num = 1
len = int(val)
while num <= len:
print('* ' * len)
num += 1
打印一个边长为n的空心正方形:
num = int(input('请输入正方形边长:'))for i in range(1, num + 1):
if i == 1 or i == num:
print('* ' * num)
else:
print('*' + ' ' * ((num - 2) * 2 + 1) + '*')
或
num = int(input('请输入正方形边长:'))val = num // 2
for i in range(-val, num - val):
if i == -val or i == num - val - 1:
print('* ' * num)
else:
print('*' + ' ' * ((num - 2) * 2 + 1) + '*')
求100以内所有奇数的和:
num = 1sum = 0
while num <= 100:
sum += num
num += 2
print('100以内所有奇数的和为:', sum)
或
sum = 0for num in range(1, 100, 2):
sum += num
print('100以内所有奇数的和为:' + str(sum))
或
sum = 0for num in range(1, 100):
if num % 2 != 0:
sum += num
print('100以内所有奇数的和为:' + str(sum))
求1000以内被7整除的前20个数:
count = 0for i in range(0, 1000, 7):
count += 1
if count > 20:
break
print(i, end=' ')
判断学生成绩对应等级:
score = int(input('请输入学生成绩:'))if score >= 90:
print('A')
elif score >= 80:
print('B')
elif score >= 70:
print('C')
elif score >= 60:
print('D')
else:
print('E')
输入三个正整数,比较大小,升序输出:
num1 = int(input('请输入第一个正整数:'))num2 = int(input('请输入第二个正整数:'))
num3 = int(input('请输入第三个正整数:'))
maximum = median = minimum = 0
if num1 > num2:
if num3 >= num1:
maximum = num3
median = num1
minimum = num2
elif num3 <= num2:
maximum = num1
median = num2
minimum = num3
else:
maximum = num1
median = num3
minimum = num2
else:
if num3 >= num2:
maximum = num3
median = num2
minimum = num1
elif num3 <= num1:
maximum = num2
median = num1
minimum = num3
else:
maximum = num2
median = num3
minimum = num1
print(minimum, median, maximum)
给定n个正整数,求它们的算数平均数:
res = 0count = 1
times = int(input('给定的正整数个数为:'))
while count <= times:
num = int(input('请输入第' + str(count) + '个数:'))
res+= num
count += 1
print('算数平均数为:' + str(res / times))
或
res = 0times = int(input('给定的正整数个数为:'))
for i in range(1, times + 1):
num = int(input('请输入第' + str(i) + '个数:'))
res += num
print('算数平均数为:' + str(res / times))
求1到阶乘n之和:
# 1 * 1 = 1
# 1 * 2 = 2
# 1 * 2 * 3 = 6
# 1 * 2 * 3 * 4 = 24
# 1 * 2 * 3 * 4 * 5 = 120
# 1 * 2 * 3 * 4 * 5 * 6 = 720
val = int(input('请输入一个数:'))sum = 0
res = 1
for i in range(1, val+1):
res *= i
sum += res
print('1到' + str(val) + '阶乘之和为:', sum)
或
val = int(input('请输入一个数:'))sum = 0
for i in range(1, val + 1):
res = 1
for j in range(1, i + 1):
res *= j
sum += res
print('1到' + str(val) + '阶乘之和为:', sum)
判断一个数是否是质数(素数):
质数:一个大于1的自然数只能被1和它本身整除
num = int(input('请输入一个自然数:'))for i in range(2, num):
if num % i == 0:
print(str(num) + '不是质数')
break
else:
print(str(num) + '是质数')
求100以内所有质数的和:
res = 0for i in range(2, 101):
for j in range(2, i):
if i % j == 0:
break
else:
res += i
print(i, end='、')
print('\n100以内所有质数的和为:', res)
或
print(2, end='、')res = 2
# 舍弃所有偶数
for i in range(3, 101, 2):
for j in range(3, int(i ** 0.5) + 1, 2):
if i % j == 0:
break
else:
res += i
print(i, end='、')
print('\n100以内所有质数的和为:', res)
打印常规(左下)形态九九乘法表:
for i in range(1, 10):for j in range(1, i+1):
print(str(j) + '*' + str(i) + '=' + str(i * j), end='\t')
print()
或
for i in range(1, 10):for j in range(1, i+1):
print('%d*%d=%d' % (j, i, j * i), end='\t')
print('')
打印左上形态九九乘法表:
for i in range(1, 10):for j in range(1, 11 - i):
print('%d*%d=%d' % (j, (10 - i), j * (10 - i)), end='\t')
print()
打印右上形态九九乘法表:
for i in range(1, 10):print((i - 1) * '\t\t', end='')
for j in range(1, 11 - i):
print('%d*%d=%d' % (j, (10 - i), j * (10 - i)), end='\t')
print()
另一种形态:
for i in range(1, 10):print((i - 1) * '\t\t', end='')
for j in range(i, 10):
print('%d*%d=%d' % (i, j, i * j), end='\t')
print()
或
for i in range(1, 10):for j in range(1, 10):
if i > j:
print('{} {} {:<3}'.format(' ', ' ', ' '), end=' ')
else:
print('{0}*{1}={2:<3}'.format(i, j, i * j), end=' ')
print()
说明:{2:<3}对应i * j,:<3冒号为分隔符,<表示左对齐,3表示宽度
打印右下形态九九乘法表:
for i in range(1, 10):print((10 - i) * '\t\t', end='')
for j in range(i, 0, -1):
print('%d*%d=%d' % (j, i, j*i), end='\t')
print()
打印指定大小的菱形:
for i in range(1, 8):if i <= 4:
print(' ' * (4 - i) + '*' * (2 * i - 1))
else:
print(' ' * (i - 4) + '*' * (7 % i * 2 + 1))
或
for i in range(-3, 4):if i < 0:
i = -i
print(' ' * i + '*' * (7 - 2 * i))
打印任意大小的菱形:
num = int(input('请输入菱形的行数(必须为奇数):'))for i in range(-(num//2), (num+1)//2):
if i <= 0:
i = -i
print(' ' * i + '*' * (num - 2 * i))
打印指定大小的对顶三角形:
for i in range(-7, 8, 2):if i < -1:
i = -i
if i == -1:
continue
print((7 - i) // 2 * ' ' + i * '*')
打印任意大小的对顶三角形:
num = int(input('请输入对顶三角形的行数(必须为奇数):'))a = num // 2
for i in range(-a, num - a):
if i < 0:
i = -i
print(' ' * (a - i) + '*' * (2 * i + 1))
打印闪电:
for i in range(-3, 4):if i < 0:
print((-i) * ' ' + (4 + i) * '*')
elif i == 0:
print(7 * '*')
else:
print(3 * ' ' + (4 - i) * '*')
或
for i in range(-3, 4):if i == 0:
print(7 * '*')
print((-i) * ' ' + (4 + i) * '*') if i < 0 else print(3 * ' ' + (3 - i) * '*')
打印斐波那契数列的第n项:
1、1、2、3、5、8、13、21、34、...,数列从第3项开始,每一项等于前两项之和
num = int(input('显示斐波那契数列第几项:'))n1 = 1
n2 = 1
count = 3
if num <= 2:
print('斐波那契数列第' + str(num) + '项为:' + str(n1))
else:
while count <= num:
res = n1 + n2
n1 = n2
n2 = res
count += 1
print('斐波那契数列第' + str(num) + '项为:' + str(res))
打印100以内的斐波那契数列:
i = j = 1while i < 100:
print(i, end=" ")
i, j = j, i + j
打印斐波那契数列前n项:
num = int(input('打印斐波那契数列前几项:'))n1 = 1
n2 = 1
res = 0
for i in range(1, num + 1):
if i <= 2:
print(1, end='、')
else:
res = n1 + n2
n1 = n2
n2 = res
print(res, end='、')
猴子吃桃:
猴子第一天摘了若干个桃,吃了一半,不过瘾,又多吃了一个。第二天早上将剩下的桃吃了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。到第10天早上发现只剩下一个桃了。求第一天猴子共摘了多少个桃?
num = 1for i in range(9):
num = (num + 1) * 2
print(num)
说明:上述变量i只做计数用,可以写成_
或
num = 1for _ in range(9):
num = (num + 1) * 2
print(num)