python 基础学习随笔
时间:2022-06-21
本文章向大家介绍python 基础学习随笔,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
(一)print 字符串的拼接,与range 函数的简单使用
打印一个边长为n 的正方形:( str(), int() 字符串与数字的转换 )
a = int(input('>>>'))
for i in range(a):
print('#'*a)
#?请打印一个空心正方形
a = 5
print('*'*a)
for i in range(a-2):
print('*'+' '*(a-2)+'*')
print('*'*5)
#简单实现,是否可以引用for 循环来实现
a = 5
for i in range(a):
if i == 0 or i == (a-1):
print('*'*a)
else:
print('*'+' '*(a-2)+'*')
# range 函数前包后不包,注意边界问题
a = int(input('>>>'))
n = a//2
for i in range(-n,n):
if i == -n or i == n-1:
print('#'*a)
else:
print('#' + ' '*(a-2) + '#')
# 对称负索引的使用,但是打出来是边长相等的吗,后边界对于奇数而言 n = n-a ,会不足奇数项
一百以内的奇数相加:(print 的在打印变量的时候不要添加引号)
a = 0
sum = 0
for i in range(1,100,2):
a = a + i
sum = sum + i
print(sum)
sum = 0
for i in range(1,100,2):
sum += i
print(sum)
# += 的巧妙使用
sum = 0
for i in range(1,100):
if i%2 != 0:
sum = sum + i
print(sum)
# 用取模作为奇数的判断条件
(二)if 条件判断的使用
成绩判断问题 :(二分法对于大数据量处理是一个不错的选择)
score = int(input('please input your score>>>'))
if score > 70:
if score > 90:
print('A')
elif score > 80:
print('B')
else:
print('C')
else:
if score > 60:
print('D')
else:
print('E')
#注意边界,注意区间的取值范围
成绩问题求1 到5 阶乘的和:
n = 1
sum = 0
for i in range(1,6):
n *= i
sum += n
print(sum)
sum = 0
for i in range(1,6):
tmp = 1
for j in range(1,i+1):
tmp *= j
sum += tmp
print(sum)
#循环的嵌套使用,和l临时变量的使用
(三)for 循环的简单实现
求素数:
num = int(input('please input your number>>>'))
for i in range(2,num):
if num % i == 0:
print('No')
break
else:
print('Yes')
#contnue 和 break 不是跳出语句块,所以if cond;break 不是跳出if,而是终止if 外的break所在的循环
#else 如果循环正常的执行结束,就执行else子句;(谜之else)
#如果使用break终止,else子句不会执行
num = int(input('please input your number>>>'))
flag = False
for i in range(2,num):
if num % i == 0:
flag = True
break
if flag:
print('No')
else:
print('Yes')
#引入一个标记,作为条件的判断
真值表:
" " 假
"string" 真
0 假
>=1 真
<=-1 真
()空元组 假
[]空列表 假
{}空字典 假
None 假
请输入若干个整数,打印出最大值:
a = int(input('>>>'))
while True:
b = int(input('>>>'))
if b:
int(b)
if a > b:
print(a)
else:
a = b
print(a)
else:
break
#以前的固有思维,对于if 条件的使用
m = int(input('>>>'))
while True:
c = input('>>>')
if c:
n = int(c)
if n > m:
m = n
print(m)
else:
break
#作为python 语法条件的使用
#相同类型则可以比较大小
#不同类型可以比较是否相等
三目运算:
if 条件判断的简便写法:(判断俩个数的最大值)
a = int(input('>>>'))
b = int(input('>>>'))
print(a) if a>b else print(b)
升级版,输入若干整数,打印最大值:
max = int(input('>>>'))
flag = True
while flag:
n = input('>>>')
if n == 'quit':
flag = False
else:
c = int(n)
if c > max:
max = c
print(max)
#引号引起来为字符串
输入若干个值,每次输入后算出平均数:
sum = 0
count = 1
num1 = int(input('>>>'))
while True:
num2 = input('>>>')
if num2 == 'quit':
break
else:
num2 = int(num2)
count += 1
sum = num1 + num2
avg = sum/count
print(avg)
#注意变量的重复赋值的迷惑性,break 跳出循环的巧妙使用,相比于打标签
九九乘法表的打印:(循环嵌套的使用)
for i in range(1,10):
for j in range(1,i+1):
line = str(i) + '*' + str(j) + '=' + str(i*j)
print(line,end=' ')
print()
#print 为另起一行打印
for i in range(1,10):
for j in range(1,i+1):
print(('{}*{}={:2}'.format(j,i,j*i)),end=' ')
print()
# 利用format 函数格式化输出
for i in range(1,10):
line = ' '
for j in range(1,i+1):
line += '{}*{}={:2} '.format(j,i,i*j)
print(line)
#format 函数单引号里面的格式代表的输出格式
for i in range(1,10):
line = ' '
for j in range(1,i+1):
line += '{1}*{0}={2:2} '.format(j,i,i*j)
print(line)
#format 函数默认索引为0,1,2.索引可以指定后面变量的使用
for i in range(1,10):
for j in range(1,10):
if j <= i:
print(str(j) + '*' + str(i) + '=' + str(i*j),end=' ')
print()
# j 的取值范围巧妙做出判断
右上角乘法口诀表的打印:
for i in range(1,10):
line = ''
for j in range(1,10):
if j >= i:
line += str(i) + '*' + str(j) + '=' + str(i*j) + ' '
print('{:>70}'.format(line))
#format 函数,<表示向左移动,> 表示向右移动
for i in range(1,10):
line = ' '
for j in range(1,10):
if j >= i:
line += '{}*{}={:{}} '.format(j,i,j*i,2)
print('{:>66}'.format(line))
#format 函数的嵌套赋值
for i in range(1,10):
line = ' '
for j in range(1,10):
if j >= i:
line += '{}*{}={:<{}}'.format(j,i,j*i,2 if j < 4 else 3)
print('{:>66}'.format(line))
#三目运算的回顾使用
打印菱形:
num = int(input('>>>'))
a = num//2
for i in range(-3,4):
if i < 0:
space = -i
else:
space = i
print(' '* space + '*'*(num-space*2))
#对称性的使用
a = int(input('>>>'))
n = a//2
for i in range(-n,a-n+1):
if i < 0:
i = -i
print(' '*i + '*'*(a-i*2))
#python 语法实现
打印对顶三角形:
num = int(input('>>>'))
e = num//2
for i in range(-e,n-e):
if i < 0:
prspace = -i
else:
prspace = i
print(' '*(e-prspace) + '*'*(2*prspace+1))
打印⚡:
for i in range(-3,4):
if i < 0:
print (' '*(-i) + '*'*(4+i))
elif i > 0:
print(' '*3 + '*'*(4-i))
else:
print('*'*7)
num = int(input('>>>'))
e = num//2
for i in range(-e,e+1):
if i < 0:
print (' '*(-i) + '*'*(e+1+i))
elif i > 0:
print(' '*3 + '*'*(e+1-i))
else:
print('*'*num)
#注意变量的关系,和之间的替换
100以内,斐波那契数列
num1 = 0
num2 = 1
print(num1,num2,sep='n')
while True:
num3 = num1 + num2
num1 = num2
num2 = num3
print(num3)
if num3 > 100:
break
num1=0
num2=1
while True:
num1,num2 = num2,num1+num2
print(num2)
if num2 > 100:
break
#简单写法
斐波那契数列第101项:
num1=0
num2=1
count = 2
while True:
num1,num2 = num2,num1+num2
count +=1
if count == 101:
print(num2)
break
#注意 是0 开始还是1 开始
num1=0
num2=1
count = 2
while True:
num1,num2 = num2,num1+num2
count +=1
if count == 101:
print('{},{}'.format(count,num2))
break
#format 函数的回顾使用
a = 1
b = 1
print(a)
print(b)
while True:
a,b = b,a+b
if b > 100:
break
print(b)
#不同的写法注意边界问题
求10万以内的素数:(性能要求)
import datetime
start = datetime.datetime.now()
for i in range(3,100000,2):
for j in range(3,int(i**0.5)+1,2):
if i%j == 0:
break
else:
print(i)
delta = (datetime.datetime.now()-start).total_seconds()
print(delta)
import datetime
start = datetime.datetime.now()
for i in range(3,100000):
if i%2 == 0 or i%5 == 0:
continue
else:
for j in range(3,int(i**0.5)+1,2):
if i%j == 0:
break
else:
print(i)
delta = (datetime.datetime.now()-start).total_seconds()
print(delta)
#datetime 函数的引入
#continue 的使用
#注意二层循环引用一层循环的变量,减少程序的空运行
list = [2]
for i in range(3,10,2):
for j in list:
if i%j == 0:
break
else:
print(i)
list.append(i)
print(list)
#列表的引入
#算法的引入:一个合数一定可以分为几个素数的成绩。
猴子吃桃的问题:
每天吃一半并多吃一个,第十天发现只有一个桃子,求第一天一共有多少个桃子:
peach = 1
for i in range(9):
peach = 2*(peach+1)
print(peach)
# 简单的数学问题代码实现
杨辉三角打印:
triangle = [[1],[1,1]]
n = 9
for i in range(2,n):
newline = [1]
pre = triangle[i-1]
for j in range(i-1):
val = pre[j] + pre[j+1]
newline.append(val)
newline.append(1)
triangle.append(newline)
print(triangle)
n = 9
print([1])
pre = [1,1]
print(pre)
for i in range(2,n):
newline = [1]
for j in range(i-1):
val = pre[j] + pre[j+1]
newline.append(val)
newline.append(1)
print(newline)
pre = newline
n = 9
for i in range(n):
newline = [1]
if i == 0:
print(newline)
continue
for j in range(i-1):
val = pre[j] + pre[j+1]
newline.append(val)
newline.append(1)
print(newline)
pre = newline
n = 9
pre = [1]
print(pre)
pre.insert(0,0)
pre.append(0)
for i in range(1,n):
newline = []
for j in range(i+1):
val = pre[j] + pre[j+1]
newline.append(val)
print(newline)
pre = newline
pre.insert(0,0)
pre.append(0)
n = 9
pre = [1]
print(pre)
pre.append(0)
for i in range(1,n):
newline = []
for j in range(i+1):
val = pre[j-1] + pre[j]
newline.append(val)
print(newline)
pre = newline
pre.append(0)
转置矩阵:
1 2 3 1 4 7
4 5 6 --------> 2 5 8
7 8 9 3 6 9
matrix = [[1,2,3],[4,5,6],[7,8,9]]
for i,row in enumerate(matrix):
for j,col in enumerate(row):
if i < j:
matrix[i][j],matrix[j][i] = matrix[j][i],matrix[i][j]
print(matrix)
matrix = [[1,2,3],[4,5,6],[7,8,9]]
length = len(matrix)
for i in range(length):
for j in range(i):
matrix[i][j],matrix[j][i] = matrix[j][i],matrix[i][j]
print(matrix)
1 2 3 1 4
-------> 2 5
4 5 6 3 6
matrix = [[1,2,3],[4,5,6]]
tm = []
for row in matrix:
for i,col in enumerate(row):
if len(tm) < i + 1:
tm.append([])
tm[i].append(col)
print(matrix)
print(tm)
用户输入数字打印每个数字重复的次数:
num = input('>>>')
d = {}
for c in num:
if not d.get(c):
d[c] = 1
continue
d[c] += 1
print(d)
num = input('>>>')
d = {}
for c in num:
if c not in d.keys():
d[c] = 1
else:
d[c] += 1
print(d)
随机产生100个整数,数字范围[-100,100],升序输出其重复的数字:
import random
n = 100
nums = [0] * n
for i in range(n):
nums[i] = random.randint(-1000,10000)
print(nums)
t = nums.copy()
t.sort()
print(t)
d = {}
for x in nums:
if x not in d.keys():
d[x] = 1
else:
d[x] += 1
print(d)
d1 = sorted(d.items())
print(d1)
字符串重复统计:
import random
alphabet = 'abcdefghijklmnopqrstuvwxyz'
words = []
for _ in range(100):
words.append(''.join(random.choice(alphabet) for _ in range(2)))
d = {}
for x in words:
d[x] = d.get(x,0) + 1
print(d)
- C++库大全
- 人工智能行业前景预测 全球市场或超2700亿元
- Arxiv网络科学论文摘要14篇
- 工信部:网络强国建设2018年重点工作任务
- 刚刚!张小龙再出重磅!微信小程序掀起新零售红利狂潮!
- 无人驾驶系列——深度学习笔记:Tensorflow的安装-windows系统
- 2018年12大顶级云安全威胁
- 缤果盒子为域名意识打call 六位数秒下bingobox.com
- 用Qt写软件系列二:QCookieViewer(浏览器Cookie查看器)
- 用Qt写软件系列一:QCacheViewer(浏览器缓存查看器)
- 用Qt写软件系列三:一个简单的系统工具(上)
- ChartDirector应用笔记(三)
- 汇编语言 手记9
- 程序员一年写百万行代码是什么体验?这肯定是个Bug
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- fpga实现YCbCr422转YCbCr444
- ES系列之原理copy_to用好了这么香
- 面试官写了个双冒号::问我这是什么语法?Java中有这玩意?
- 【基础篇】一步一步实现c#与halcon联合编程
- Kafka生产者的使用和原理
- 12个非常适合做外包项目的开源后台管理系统
- R 语言根据条件判断返回ABCD状态
- 贪心法
- MySQL分布式逻辑备份
- OpenGL ES 相机 LUT 滤镜
- Siem落地方案:初识clickhouse
- FFmpeg + OpenGL ES 实现 3D 全景播放器
- 手把手教你自定义实现一个npm audit
- 异步神器CompletableFuture
- IoT安全测试指北