1、输出100以内的偶数:
第一个循环,就是常规的算法,这都能看懂,第二个和第三个是一种取巧的奇数偶数找法。
list = []
list1 = []
list2 = []
list3 = []
for i in range(1,100):
if i % 2!=0:
list.append(i)
if i % 2==0:
list1.append(i)
for j in range(1,100,2):
list2.append(j)
for k in range(2,100,2):
list3.append(k)
print("偶数为:",list1)
print('奇数为:',list2)
print("偶数为:",list)
print("偶数为:",list3)
2、判断是质数还是合数
s = int(input('请输入一个自然数'))
flag = False
for i in range (2,s):
if s % i ==0:
flag = True
break
if flag :
print("这是合数")
else:
print("这是质数")
3、用递归和普通方法求阶乘
#非递归
n = 10
sum = 1
for i in range(1,n+1):
sum *= i
print(sum)
#递归
def jiecheng(num):
if num ==1 :
return 1
else:
return num * jiecheng(num-1)
print(jiecheng(n))
4、输入一个数,求从这个数开始每个数阶乘的和。
这里引入一个python的函数,属于math函数,就是用来求阶乘的。注释部分有根据上述两种方法调用,求阶乘和的案例。
k = int(input('请输入一个自然数:'))
import math
sum = 0
for i in range(1,k+1):
sum += math.factorial(i) #q求阶乘的函数
#非递归求阶乘
# def jiecheng(n):
# a = 1
# for i in range(1,n):
# a *= i+1
# return a
# k = int(input('请输入一个自然数:'))
# sum = 0
# for j in range (1,k+1):
# print(jiecheng(j))
# sum += jiecheng(j)
#递归求阶乘
# def jiecheng1(n):
# if n == 1:
# return n
# else :
# return n*jiecheng1(n-1)
# k = int(input('请输入一个自然数:'))
# sum = 0
# for j in range (1,k+1):
# sum += jiecheng1(j)
print(sum)
5、圆的周长和面积
import math
print(math.pi)
pi = 3.14
r = float(input("请输入圆的半径:"))
c = 2 * pi * r
s = pi * r * r
print("圆的周长是:",c)
print("圆的面积是:",s)
6、勾股定理
import math
a = int(input('请输入第一条边长:'))
b = int(input('请输入第二条边长:'))
m = a**2 + b**2
c = math.sqrt(m)
print('第三条边长为:',c)
7、三个数比大小
采用了传统C的赋值方法和python独有的赋值方法。
a = int(input('请输入第一个数:'))
b = int(input('请输入第二个数:'))
c = int(input('请输入第三个数:'))
# list = [a,b,c]
# list1 = sorted(list)
# print(f"三个数从大到小的顺序是:{list1[0]}、{list1[1]}、{list1[2]}")
if a<b :
# max = b
# b = a
# a = max
a,b=b,a
if a < c :
# max = c
# c = a
# a = max
a,c=c,a
if b < c :
# max = c
# c = b
# b = max
b,c=c,b
print("三个数从大到小的顺序是:",a,b,c)
8、找出区间内的素数
def prime(n):
flag =True
for i in range(2,n):
if n % i == 0:
flag = False
break
return flag
a = int(input('请输入左端点数:'))
if a < 2:
a=2
b = int(input('请输入右端点数:'))
list = []
for i in range(a,b):
if prime(i):
list.append(i)
print(list)
print(len(list))
9、输出1-4这四个数字,随机三个数字组合起来,有多少种不同组合:
def prime(n):
flag =True
for i in range(2,n):
if n % i == 0:
flag = False
break
return flag
a = int(input('请输入左端点数:'))
if a < 2:
a=2
b = int(input('请输入右端点数:'))
list = []
for i in range(a,b):
if prime(i):
list.append(i)
print(list)
print(len(list))
10、打印乘法口诀表
for i in range(1,10):
print()
for j in range(1,i+1):
a = i*j
print(f"{i}*{j}={a}",end = ' ')
11、打印水仙花数
水仙花数是指一个 3 位数,它的每个数位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
n=457
a1 = n % 10
b1 = n % 100 //10
c1 = n // 100
print(a1,b1,c1)
for i in range(100,1000):
a = i//100
b = (i-a*100)//10
c = i-a*100-b*10
if i == a**3 + b**3 + c**3 :
print(i)
12、反向输出四位数
a = int(input('请输入四位数:'))
a = str(a)
a = a[::-1]
a = int(a)
print(a)
13、判断字母
a = int(input('请输入四位数:'))
a = str(a)
a = a[::-1]
a = int(a)
print(a)
14、判断三条边长能否构成三角形
a = int(input('请输入第一条边长:'))
b = int(input('请输入第二条边长:'))
c = int(input('请输入第三条边长:'))
if c>0 and b>0 and a>0:
if a+b>c and a+c>b and b+c>a:
print('可以构成三角形的三条边')
else:
print('不符合三角形的三条边')
else:
print("你输入有误,请重新输入")
15、输出1000以内的完数
for i in range(1,1000):
sum = 0
for j in range(1,i):
if i % j ==0:
sum += j
# print(sum(list))
if i == sum:
print(i)
16、质数的因子
a = int(input('请输入一个自然数'))
list = []
i = 2
while(i!=a):
if a % i == 0 :
list.append(i)
a = a / i
else:
i +=1
list.append(int(a))
#print(list)
for i in list:
print(i,end=' ')
17、根据三边边长求三角形面积(海伦公式)
import math
a = int(input('请输入第一条边长:'))
b = int(input('请输入第二条边长:'))
c = int(input('请输入第三条边长:'))
if c>0 and b>0 and a>0:
if a+b>c and a+c>b and b+c>a:
print('可以构成三角形的三条边')
p = (a + b + c) / 2
s = math.sqrt(p * (p - a) * (p - b) * (p - c))
print('该三角形面积是',s)
print('该三角形面积是%.2f' %s)
else:
print('不符合三角形的三条边')
else:
print("你输入有误,请重新输入")
18、判断某年某天
import datetime
#print('输入格式为年 月 日' )
#map() 会根据提供的函数对指定序列做映射。
#第一个参数 以参数序列中的每一个元素调用该函数,返回包含每次函数返回值的新列表。
#year,month,day = map(int,input().split(" "))
year = int(input('请输入年份'))
month = int(input('请输入月份'))
day = int(input('请输入日期'))
yuandan = datetime.datetime(year,1,1)
#print(yuandan)
now = datetime.datetime(year,month,day)
#print(now - yuandan)
#.days取的是相差多少天属于timedelta类
print((now - yuandan).days +1)
19、根据汽车轮胎标识推断生产日期
# 引入datetime模块
import datetime
# 定义一个函数,输入轮胎的日期编码,输出这一周的周一是几月几号
def tire_date(code):
# 检查输入是否为四位数字
if not code.isdigit() or len(code) != 4:
print("请输入正确的日期编码")
return
# 提取周数和年份
week = int(code[:2])
year = int(code[2:])
year +=2000
# 检查周数是否在1-52之间
if not 1 <= week <= 52:
print("请输入正确的日期编码")
return
# 计算轮胎生产日期
date = datetime.date(year, 1, 1) + datetime.timedelta(days=(week-1)*7)
# 计算这一周的周一的日期
monday = date - datetime.timedelta(days=date.weekday())
if monday.month ==12:
print(f"{code}表示轮胎是在{year}年的第{week}周生产的,这一周的周一是{year-1}年{monday.month}月{monday.day}号")
else:
print(f"{code}表示轮胎是在{year}年的第{week}周生产的,这一周的周一是{monday.month}月{monday.day}号")
luntai=input('请输入轮胎代码')
tire_date(luntai)
20、佩波纳契数列
#递归
def fib(N):
if N == 1 or N == 2:
return 1
else :
return fib(N-1)+fib(N-2)
print(fib(6))
#非递归
n = 6
list = [1,1]
for i in range(2,n):
list.append(list[i-1]+list[i-2])
print(list[n-1])
21、华氏度和摄氏度转换.
#华氏度=摄氏度*1.8+32
a = int(input('摄氏度转华氏度按1,华氏度转摄氏度按2:'))
b = float(input('请输入温度'))
if a==1:
F = b *1.8 + 32
print("摄氏度为 %.2f"%F)
if a == 2:
C = (b - 32) /1.8
print("摄氏度为%.2f"%C)
22、复制列表
#浅拷贝,浅拷贝是指列表的快捷方式
list1 = [1,2,3,4,5,6]
#
# list2 = list1
#
# list1[0]=100
#
# print(list2)
#全部复制除了用循环就是cpoy模块
import copy
list3 = copy.copy(list1)
list1[0]=100
print(list3)
23、反转列表.
list = [1,2,3,4,5,6,7,8]
list3= [1,2,3,4,5,6,7,8]
#方法一reverse方法
list3.reverse()
print(list3)
#方法二切片:[::-1]
list1 = list[::-1]
print(list1)
#方法三:for循环
list2 = []
for i in range(len(list)):
list2.append(list[len(list)-i-1])
print(list2)
24、暂停功能(以输出代替,适合写脚本使用)
import time
start = time.time()
time.sleep(2)
print('this is sleep')
end = time.time()
print(end-start)
25、成绩判断
def fun1(a,b):
if a ==b :
return a
num = min(a,b)
while a %num !=0 or b%num !=0:
num -=1
return num
def fun2(a,b):
while b!=0:
a,b=b,a%b
return a
print(fun1(12,18))
print(fun2(12,18))
26、统计字符串的字符数量(计算字符串长度)
a = input("请输入字符串:")
#1、传统计数
count = 0
for i in a:
count +=1
print(count)
#2len()函数
print(len(a))
27、落体反弹
#高度100米,小球反弹,每次反弹的高度是上一次的一半,第10次,小球高度是
count = 0
n = 100
list = []
while count <=10 :
if count == 0 :
list.append(n)
n /=2
count +=1
else :
list.append(n)
n /=2
count+=1
print(list)
28、猴子吃桃
注释部分是正向验证结果所用
#猴子第一天吃了所有桃子的一半,第二天吃一半多一个,以此类推,第十天发现只剩下一个了,问一共有多少桃子
# n = 1534+1534
# count =1
# list= []
# while count <= 10:
# if count ==1:
# n=n/2
# list.append(n)
# count +=1
# else:
# n = n - (n/2 +1)
# list.append(n)
# count += 1
# print(list)
s = 1
d = 10
while d >= 1 :
if d ==1:
s = s *2
d -=1
print(s)
else :
s = 2*(s+1)
d -=1
print(s)
29、指定数列求和
##分数数列2/1、3/2、5/3、8/5、13/8、21/13、。。。。求这个数列前10项之和
fenzi =2
fenmu =1
sum = 0
for i in range (20):
sum += fenzi / fenmu
a = fenmu
fenmu = fenzi
fenzi = fenzi + a
print(fenzi,"/",fenmu)
print(sum)
30、年龄急转弯
#第一个人十岁,第二个人比第一个人大两岁,第三个人比第二个人大两岁,第四个人比第三个人大两岁以此类推
#锻炼递归,求第五个人年龄
i = 1
def old(i):
if i == 1:
return 10
else :
return old(i-1)+2
print(old(5))
31、回文数
#正着读反着读是一样的数比如12321
x = str(input('请输入一个数'))
y = x[::-1]
if x==y:
print('是回文数')
else:
print('不是回文数')
32、练习判断(根据简写判断星期几)
#星期一(Monday)、星期二(Tuesday)、星期三(Wednesday)
# 星期四(Thursday)、星期五(Friday)、星期六(Saturday)、星期日(Sunday)
a = input('请输入第一个字母')
if a =='M':
print('周一')
elif a == 'T':
b = input('请输入第2个字母')
if b == 'u':
print('周二')
elif b == 'h':
print('周四')
else:
print('错误的输入')
elif a=='W':
print('是周三')
elif a == 'F':
print('是周五')
elif a == 'S':
c = input('请输入第2个字母')
if c == 'u':
print('周6')
elif c == 'a':
print('周日')
else:
print('错误的输入')
else:
print('错误的输入')
33、对十个数进行排序
a = map(int,input().split())
a = list(a)
a.sort()
print (a)
'''a = map(int,input().split()):这一行使用了map和input两个内置函数。input函数用于从用户输入中获取一行字符串,例如"1 3 5 2 4"。split方法用于将字符串按照空格分割成一个列表,例如["1", "3", "5", "2", "4"]。map函数用于对列表中的每个元素应用一个函数,这里是int函数,它可以将字符串转换成整数。因此,这一行的结果是一个map对象,它包含了用户输入的整数,例如[1, 3, 5, 2, 4]。
a = list(a):这一行使用了list函数,它可以将一个map对象转换成一个列表。这样做的目的是为了方便后续的操作,因为map对象只能被遍历一次,而列表可以被多次使用。因此,这一行的结果是一个列表,它和上一行的map对象相同,例如[1, 3, 5, 2, 4]。
a.sort():这一行使用了列表的sort方法,它可以对列表中的元素进行升序排序。这是一个原地操作,也就是说,它会直接修改列表a,而不会返回一个新的列表。因此,这一行的结果是对列表a进行排序,例如[1, 2, 3, 4, 5]。
print (a):这一行使用了print函数,它可以将一个对象打印到标准输出中,也就是屏幕上。这里打印的对象是列表a,它是排序后的列表,例如[1, 2, 3, 4, 5]。这一行的结果是在屏幕上显示排序后的列表,例如[1, 2, 3, 4, 5]。'''
34、主对角线元素之和
a = []
sum = 0
for i in range(3):
a.append([])#大列表里面新放入一个列表,表示我新放进一行
for j in range(3):
k = int(input('请按行输入数据'))
a[i].append(k)
if i == j:
sum += k
print(a)
print("对角线之和是",sum)
35、有序列表添加元素
list = [1,2,20,100,300,500,1000,5000]
n = int(input('请输入数据'))
#投机方法
# list.append(n)
# list.sort()
#普通方法
for i in range(0,len(list)):
if n > list[i]:
i+=1
else:
list.insert(i,n)
break
print(list)
36、随机数猜大小小游戏的完整设计
import random
def roll_dice(numbers=3,points=None):
if points is None:
points = []
while numbers > 0:
#point = random.randrange(1,7)
point = random.randint(1,7)
points.append(point)
numbers =numbers - 1
return points
def roll_result(total):
isBig = 11 <= total <=18
isSmall = 3 <= total <=10
if isBig:
return 'Big'
elif isSmall:
return 'Small'
def start_game():
print('<<<<< GAME STARTS! >>>>>')
choices = ['Big','Small']
your_choice = input('Big or Small :')
if your_choice in choices:
points = roll_dice()
total = sum(points)
youWin = your_choice == roll_result(total)
if youWin:
print('The points are',points,'You win !')
else:
print('The points are',points,'You lose !')
else:
print('Invalid Words')
start_game()
start_game()
37、二进制运算中的与、或、异或、按位取反
#与运算(相同为0不同为1)符号是 &
print((255&255))
#或(有一个1即为1)符号是 |
print((255|255))
#异位运算(不同为1,相同为0)符号是^
print((255^240))
#按位取反(如果对正数X取反等同于-(X+1))符号是~
print((~-3))
print((~3))
38、杨辉三角
n = 10
y = []
for i in range(0,n):
yh = [] #每一行的元素
for j in range(0,i+1):
if j==0 or j == i:
yh.append(1)
else :
yh.append(y[i-1][j-1] + y[i-1][j])
y.append(yh)
print(yh)
39、统计第一个出现三次的字符(字典的练习)
a = 'world is big i want to see'
m = -1
freq = dict()
for i in a:
if i in freq:
freq[i] +=1
else :
freq[i] =1
for j in range(len(a)):
if freq[a[j]]==1:
m = j
break
if m==-1:
print('NO')
else:
print('是第',m+1,'个字符,字符是:',a[m])
40、查找字符串
a = "apple monday house"
b = "house"
c = " "
d = "a"
e = "housp"
print('查找到了,就返回字符串首个字母索引',a.find(b))
print('查找不到了,就返回-1',a.find(e))
print(a.find(c))
41、最大公因数
def fun1(a,b):
if a ==b :
return a
num = min(a,b)
while a %num !=0 or b%num !=0:
num -=1
return num
def fun2(a,b):
while b!=0:
a,b=b,a%b
return a
print(fun1(12,18))
print(fun2(12,18))
42、两个列表不同元素的查找并显示出来
#第一个列表是123456
#第二个列表是1,1,2,5,5,1
list2 = [1,1,2,5,5,1]
list1 = [i for i in range(1,len(list2)+1)]
list3 = []
for j in list1:
if j in list2:
continue
else:
list3.append(j)
print(list3)
43、字符串的字符查找和替换:
def tihuan(a,b,c):
t=''
for i in a:
if i ==b:
t +=c
else:
t +=i
return t
mm='hello usa was bitch'
s='u'
k='k'
print(tihuan(mm,s,k))
44、快乐数
def change(x):
sum = 0
while x>0:
j = x %10#该数字对10的余数,取的是个位数
sum+=j*j#平方的和
x //=10#将数字的最后一位去掉(整除10,去掉余数)
return sum
def happynumber(n):
while n >9:
n = change(n)
if n ==1 or n==7:
return True
else:
return False
print(happynumber(45))
45、立方根
import math
def pow(x):
result = math.pow(x,1/3)
return int(result)
print(pow(27))
46、寻找列表里每一个字符串都有的最长前缀部分.py
def qianzhui(list2):
x = len(list2)
if x==0:
return'没有'
#本质上该循环是拿第一个字符串和后面所有的字符串去比
for i in range(len(list2[0])):
#把第一个字符串里的每一个字符掏出来逐步向上加直到全部加上
temp = list2[0][i]
#对每一个字符串从首字母开始进行轮询
for j in range(1,x):
#排除首位字母不相等情况
if list2[0][0]!=list2[j][0]:
return '没有'
#判断最短的字符串是不是遍历完了或者出现不一样的字符了
if i == len(list2[j]) or temp != list2[j][i]:
return list2[0][0:i]
return list2[0]
list = ['abcdee','abcdsss','abce123','a1bc']
print(qianzhui(list))
47、字符串内的单词顺序倒转并大小写互换
def aaa(s):
#切割字符串里的单词
list = s.split(' ')
#列表元素的位置颠倒过来
list = list[::-1]
s = ''
for i in list:
#用于进行每个字符的大小写替换
i = i.swapcase()
s+=i
s+=' '
return s
print(aaa('UK IS England and Scotland'))
48、字符串中的连续字符压缩
#eg:aaaaabcccd变为a5bc3d
def func(s):
list= []
for i in s:
if not list or list[-2]!=i :
list.append(i)
list.append(1)
else:
list[-1] +=1
return ''.join(map(str,[x for x in list if x!=1]))
print(func('aaaaabcccd'))
49、无序数组选择三个数使乘积最大
def shuzumax(list):
#sort函数是列表的一个默认函数,会将原列表按照从小到大的顺序直接排序
list.sort()
#这个意思是,如果全是正数最大的三个正数
#如果有正有负,则最佳组合必为上下两种算法其中之一
#如果全是负数则取两个最小的负数和一个正数相乘
return max(list[0]*list[1]*list[-1],list[-1]*list[-2]*list[-3])
print(shuzumax([-1,-2,3,4,-5,-6,-7]))
50、循环的练习--密码验证器
# count = 0
# while True:
# print('Repeat this line !')
# count = count + 1
# if count == 5:
# break
# #重置密码的功能+三次输入错误禁止再次输入
# password_list = ['*#*#','12345']
# def account_login():
# countp = 0
# while(countp<3):
# password = input('Password:')
# password_correct = password == password_list[-1]
# password_reset = password == password_list[0]
# if password_correct:
# print('Login success!')
# elif password_reset:
# new_password = input('Enter a new password:')
# password_list.append(new_password)
# print('Your password has changed successfully!')
# account_login()
# else:
# countp=countp+1
# print('Wrong password or invalid input!')
# else:
# print("error")
# account_login()
password_list = ['*#*#','12345']
def account_login():
tries = 3
while tries > 0:
password = input('Password:')
password_correct = password == password_list[-1]
password_reset = password == password_list[0]
if password_correct:
print('Login success!')
elif password_reset:
new_password = input('Enter a new password :')
password_list.append(new_password)
print('Password has changed successfully!')
account_login()
else:
print('Wrong password or invalid input!')
tries = tries - 1
print( tries, 'times left')
else:
print('Your account has been suspended')
account_login()