1. 冒泡算法
方法一:
num = [1, 5, 10, 58, 12, 2]
for i in range(len(num)-1):# 比较n-1轮,n为元素个数
for j in range(len(num)-1-i):# 剩余两两进行比较的次数
if num[j] < num[j + 1]:
num[j + 1], num[j] = num[j], num[j + 1]
print(num) #打印结果为:[58, 12, 10, 5, 2, 1]
方法二:
list1 = [2, 6, 9, 10, 18, 15, 1]
a =len(list1) # 统计列表元素的长度:len()函数(统计)
print(a) # 列表的长度为7
for i in range(a): # 那么a的取值为:0123456 #控制循环的次数
for j in range(i+1,a): # 当i=0时 j=1.2.3.4.5.6
if list1[i]>list1[j]: # 如从大到小只需要将大于号改为小于号
#list1[]=list1[j] 调试,满足条件就替换
list1[i],list1[j]=list1[j],list1[i]
# 双向赋值语法,两者替换,无先后循序同时取值,把i的值赋值给j,
print(list1)#调试解释用的
print(list1) # 运行结果:[1, 2, 6, 9, 10, 15,18]
2. 打印99乘法表
方法一:
for i in range(1,10):
for j in range(1,i+1):
print("{}*{}={}".format(i,j,i*j),end=' ') #使用format格式化输出
print()
方法二:
for i in range(1,10): # 用来控制循环次数,外循环 i的结果循环次数为:1-9
for j in range(1,i+1): # 内循环 j=1 内循环循环完毕后才会回到外
循环
print(j,'*',i,'=',j*i,'\t',end='') # \t 转义字符:表示空格 \n :表示换行
print('\n')
# 解析
当i = 1 j = 1 1 * 1 = 1
当1 = 2 j = 1,2 1x2=2 2x2=4
3. 杨辉三角**
massage = '''
杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。
'''
n = eval(input("输入要打印的行数:"))
triangle = [[1], [1, 1]]
for i in range(2, n): # 已经给出前两行,求剩余行
pre = triangle[i-1] # 上一行
cul = [1] # 定义每行第一个元素
for j in range(i-1): # 算几次
cul.append(pre[j]+pre[j+1]) # 每个数字等于上一行的左右两个数字之和。
cul.append(1) # 添加每行最后一个元素
triangle.append(cul)
print("普通输出:{}".format(triangle))
for i in range(n): # 按等边三角形格式输出
s = " "*(n-i-1)
for j in triangle[i]:
s = s + str(j)+" "
print(s)
4. 水仙花
massage = """
求100-999 所有的"水仙花数"。所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如: 153 是一个"水仙花数",153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数
"""
l = []
for i in range(100,1000):
a = i // 100
b = (i%100) // 10
c = i % 10
if a**3 + b**3 + c**3 == i:
l.append(i)
for i in range(len(l)):
print(l[i],end = " ")
# 输出结果 153 370 371 407
5. 金字塔图案
打印用“*”组成的金字塔图案。
输入描述:
多组输入,一个整数(2~20),表示金字塔边的长度,即“*”的数量,也表示输出行数。
输出描述:
针对每行输入,输出用“*”组成的金字塔,每个“*”后面有一个空格。
def pypart(n):
myList = []
for i in range(1, n + 1):
myList.append("*" * i)
print("\n".join(myList))
# 驱动程序代码
n = 5
pypart(n)
6. 波非那契数列
方法一:
def fib(lenght):
a, b = 0, 1
n = 0
while n < lenght:
yield b
a,b = b,a+b
n += 1
gen = fib(9)
for i in gen:
print(i,end=' ')
方法二:
def fun(n): # n = 9
list1 = []
for i in range(n): # i = 0-8
if i == 0 or i == 1:
list1.append(1) #当i=0或者1的时候往列表添加1,先确定前面的两个数位1
else:
list1.append(list1[i-2] + list1[i-1]) #[i-2]索引位是减两位的和减一位的相加得到的结果
print(list1)
fun(9)
7. 序列中整数去重
题目描述
给定一个整数序列,把其中的重复的整数去掉,并将去重后的序列从小到达排序输出。
输入描述:
第一行,输入一个整数n,表示序列有n个整数。
第二行输入n个整数(每个整数大于等于1,小于等于1000),整数之间用空格分隔。
输出描述:
去重并且从小到大排列的整数序列,整数之间用空格分隔。
'''
n = int(input('请输入:'))
l = list(map(int,input('请输入一段整数:').split(' ')))
new_l = []
for i in range(len(l)):
if l[i] not in new_l:
new_l.append(l[i])
print(new_l)
8. 数字直角三角形图案
massage = '''
打印用数字组成的数字三角形图案。
输入描述:
多组输入,一个整数(3~20),表示数字三角形边的长度,即数字的数量,也表示输出行数。
输出描述:
针对每行输入,输出用数字组成的对应长度的数字三角形,每个数字后面有一个空格。
'''
while True:
try:
n = int(input("请输入3-20的数字:"))
for i in range(n):
for j in range(1,i+1):
print(j,end=' ')
print()
except:
break
"""
9. 一行代码实现1~100的和
print(sum([i for i in range(1,101)]))
10. 反向输出一个字符串
方法一:
s = str(input("请输入一个需要排序字符串:")) # new_s = s[-1::-1] new_s = s[::-1] print(new_s)
方法二:
str = list(input('input a string:')) str.reverse()#该方法没有返回值,若打印则出现None,但会对列表元素进行反向排序 print(''.join(str))
11.求出1 / 1 + 1 / 3 + 1 / 5……+1 / 99的和 (1分之一+3分之1+5分支1....)
i=1.0 # 定义变量i 赋予浮点值(用作控制循环的次数)
sum=0 # 定义一个求和的变量
while i <= 99: # while循环
sum = sum + 1/i # i为可变分子和分母必须要有一个为浮点数
i+=2
print(sum) # 结果为:2.93777484847
12.用循环语句,计算2 - 10之间整数的循环相乘的值 (2X3X4X5....10)
sum = 1 # 定义一个求和的变量
for i in range(2,11): # i变量值是用遍历range函数内的值来循环
sum = sum * i #这个地方不需要i=i+1,一般是结合while使用
print(sum) # 运行结果:3628800