python第五次作业

1、不死兔子

2、回文字符串

3、质数和

4、a+和

其中a为1到9之间的一个数,项数也要指定

5、合并数组

6、奇偶排序

7、寻找缺失元素

英雄购买
import sys
 
users_data = {}

 
def new_user_data():
  """
  用户注册
  user_id 用户注册的账号
  user_passwd 用户密码
  user_passwd_chacked 用户确认密码
  """
  print("请输入您的账号:")
  while True:
    user_id = str(input())
    if len(user_id) < 3:
      print("账号过短,请重新输入:")
      continue
    #有问题
    for keys in users_data.keys():
      if user_id == keys: 
        print("账号已存在,请重新输入账号:")
        break
    else:
      break
  print("请输入您的密码:")
  while True:
    user_passwd = str(input())
    if len(user_passwd) < 3:
      print("密码过短,请重新输入:")
      continue
    else:
      print("请确认密码:")
      user_passwd_chacked = str(input())
      if user_passwd_chacked!= user_passwd:
        print("两次密码不一致,请重新输入:")
        continue
      else:
        users_data[user_id] = user_passwd
        print("注册成功!")
        break
  return users_data
 
 
def user_login():
  """
  用户登录
  user_id 用户账号
  user_passwd 用户密码
  """
  print("请输入你的账号:")
  while True:
    user_id = str(input())
    flog = False
    for key in users_data.keys():
      if user_id == key:
        flog = True
        break
    if flog:
      break
    else:
      print("账号不存在,请重新输入:")
  print("请输入您的密码:")
  while True:
    user_passwd = str(input())
    if user_passwd == users_data[user_id]:
      return ""
    else:
      print("密码输入有误,请重新输入:")
      continue
       
 
 
 
 
while True:
  
 
#英雄商城登录界面 
 
  print("\t英雄商城登录界面\n")
  print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n")
  print("\t1. 用户登录\n")
  print("\t2. 新用户注册\n")
  print("\t3. 退出系统\n")
  print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n")
  print("(温馨提示)请输入您的选项:")
 
  login_num = int(input())
 
  if login_num == 1:
    user_login()
 
 
    while True:
 
    #英雄联盟商城首页
      print("\t英雄联盟商城首页\n")
      print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n")
      print("\t1. 进入英雄超市\n")
      print("\t2. 休闲小游戏\n")
      print("\t3. 退出登录\n")
      print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n")
      print("(温馨提示)请输入您的选项:")
 
      home_num = int(input())
      if home_num == 1:
        while True:
          print("\t英雄商城英雄列表\n")
          print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n")
          print("编号  姓名     昵称     价格  库存  描述\n")
          print("1     纳尔   迷失之牙  3500  100  丛林不会原谅盲目与无知\n")
          print("2     锐雯   放逐之刃  4000  100  她是残忍高效的战士\n")
          print("3     薇恩   暗夜猎手  3500  100  这个世界不想人们想象的那么美好\n")
          print("4     扎克   生化魔人  3000  100  即使你没有脊柱,你也必须站起来\n")
          print("5     杰斯  未来守护者 2500  100  武装着睿智与魅力,你的选择没有错\n")
          print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n")
          print("(温馨提示)请输入您要购买的英雄编号:")
          
          buy_num = int(input())
 
          if buy_num ==1 :
 
            #英雄商城购买英雄
        
            print("\t英雄商城购买英雄\n")
            print("英雄购买票据")
            print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n\n")
            print("英雄名称:纳尔\n")
            print("英雄属性:生命值428(+85)/能量值200(+0)/移动速度425/攻击力55.8(+3.2)\n")
            print("攻击速度0.651(+3.1%)/护甲值24(+1.25)/攻击距离125\n\n")
            print("英雄座右铭:一人之行可灭世,众人之勤可救世!\n")
            print("英雄价格:3000\n")
            print("活动折扣:9.5\n\n")
            print("插播广告:当风云变色,当流离失所,世界不再是旧日模样")
            print("你是否会为了自己的梦想战斗,直至力战身亡,直至彼岸他乡")
            print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n")
            print("(温馨提示)请付款:")
 
          if buy_num == 2:
  
        #英雄商城购买英雄
        
            print("\t英雄商城购买英雄\n")
            print("英雄购买票据")
            print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n\n")
            print("英雄名称:锐雯(史诗)\n")
            print("英雄属性:生命值428(+85)/能量值200(+0)/移动速度425/攻击力55.8(+3.2)\n")
            print("攻击速度0.651(+3.1%)/护甲值24(+1.25)/攻击距离125\n\n")
            print("英雄座右铭:一人之行可灭世,众人之勤可救世!\n")
            print("英雄价格:3000\n")
            print("活动折扣:9.5\n\n")
            print("插播广告:当风云变色,当流离失所,世界不再是旧日模样")
            print("你是否会为了自己的梦想战斗,直至力战身亡,直至彼岸他乡")
            print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n")
            print("(温馨提示)请付款:")
 
          if buy_num == 3 :
 
        #英雄商城购买英雄
            print("\t英雄商城购买英雄\n")
            print("英雄购买票据")
            print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n\n")
            print("\t英雄名称: 薇恩(史诗)\n")
            print("\t英雄价格:10000\n")
            print("\t活动折扣:9.5\n\n")
            print("\t应付付款:9500\n")
            print("\t实际付款:10000\n")
            print("\t找零:500\n\n")
            print("插入广告:当风云变色,当流离失所,世界不再是旧日模样")
            print("你是否会为了自己的梦想战斗,直至力战身亡,直至彼岸他乡 ")
            print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n")
            print("(温馨提示)按任意键返回上一级菜单:")
 
          if buy_num == 4:
 
            #英雄商城购买英雄
            print("\t英雄商城购买英雄\n")
            print("英雄购买票据")
            print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n\n")
            print("\t英雄名称: 扎克 (史诗)\n")
            print("\t英雄价格:10000\n")
            print("\t活动折扣:9.5\n\n")
            print("\t应付付款:9500\n")
            print("\t实际付款:10000\n")
            print("\t找零:500\n\n")
            print("插入广告:当风云变色,当流离失所,世界不再是旧日模样")
            print("你是否会为了自己的梦想战斗,直至力战身亡,直至彼岸他乡 ")
            print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n")
            print("(温馨提示)按任意键返回上一级菜单:")
 
          if buy_num == 5:
                 #英雄商城购买英雄
            print("\t英雄商城购买英雄\n")
            print("英雄购买票据")
            print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n\n")
            print("\t英雄名称: 杰斯 (史诗)\n")
            print("\t英雄价格:10000\n")
            print("\t活动折扣:9.5\n\n")
            print("\t应付付款:9500\n")
            print("\t实际付款:10000\n")
            print("\t找零:500\n\n")
            print("插入广告:当风云变色,当流离失所,世界不再是旧日模样")
            print("你是否会为了自己的梦想战斗,直至力战身亡,直至彼岸他乡 ")
            print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n")
            print("(温馨提示)按任意键返回上一级菜单:")
 
      if home_num == 2:
        print("这里是休闲小游戏")
        #TODO
      if home_num == 3:
        break
 
 
  if login_num == 2:
    new_user_data()
  
  if login_num == 3:
    sys.exit(0)
  else:
 
    print("参数输入有误,请重新输入:")

------------------------------------------------------Python题库------------------------------------------------------------

摄氏温度转化为华氏温度
#摄氏温度转化为华氏温度
celsius = float(input("请输入摄氏度:"))
fahrenheit=(9/5)*celsius+32
print("华氏温度是%.1f"%fahrenheit)
 计算圆柱体的体积
#计算圆柱体的体积
radius , length = map( float,input("请输入高和半径,用空格隔开").split( ))
π = 3.14
area=radius*radius*π
volume=area*length
print("圆柱体的面积是%.2f"%area)
print("圆柱体的体积是%.2f"%volume)
 输入英尺数然后将它转换为米数,并输出结果,
# 输入英尺数然后将它转换为米数,并输出结果,
male = float(input("请输入英里数:"))
m = male*0.305
print("%f英里等于%.4f米"%(male,m))
  计算小费  
# 计算小费  
Money, Cash = map(float,input("请输入小费和酬金率,用空格隔开:").split())
SmallMoney = Money*Cash/100
print("小费有"+str(SmallMoney))
print("合计%.2f元"%(SmallMoney+Money))
 对一个整数中的各位数字求和
# 对一个整数中的各位数字求和
num = int(input("请输入一个0~1000的数字:"))
print("他的各个数之和是:"+str(int(num/100)+int(num/10%10)+int(num%10)))
 计算年数和天数
#  计算年数和天数
min = int (input("请输入分钟数:"))
 
print("这是第%d年"%(min/60/24/365))
print("这是第%d天"%(min/60/24%365))
计算能量
# 计算能量
water = float(input("请输入需要加热的水量:"))
initialTemperature=float(input("请输入加热前的水量:"))
finalTemperature = float(input("请输入要加热到的最终温度:"))
Q = water * (finalTemperature - initialTemperature) * 4184
print("加热到%s度需要%.1f焦耳的热量"%(finalTemperature,Q))
输入一个四位整数,并以反向顺序显示
# 输入一个四位整数,并以反向顺序显示
num = int (input("请输入一个四位数:"))
print(num%10)
print(int(num/10%10))
print(int(num/100%10))
print(int(num/1000))
计算三角形的面积
# 计算三角形的面积
 
 
# 导入math类使用sqrt函数
import math
 
 
x1,y1,x2,y2,x3,y3=map(float,input("请输入三角形的顶点坐标,用空格隔开:").split())
side1 = math.sqrt((y1-y2)**2+(x1-x2)**2)
side2 = math.sqrt((x2-x3)**2+(y2-y3)**2)
side3 = math.sqrt((x1-x3)**2+(y1-y3)**2)
s=(side1+side2+side3)/2
area = math.sqrt(s*(s-side1)*(s-side2)*(s-side3))
print("面积是%.1f"%area)
 输入你所在的时区,并输出当前的时间
# 输入你所在的时区,并输出当前的时间
 
# 从datetime模块导入datetime类和timedelta类(表示时间间隔)
from datetime import datetime,timedelta
 
 
place = int(input("请输入时区:"))
# 获取当前时间
now = datetime.now()
# 将时间格式化为字符串
time_8= now.strftime("%H:%M:%S")
 
if place == 8:
  print(time_8)
elif place == -5:
  # 修改时间(将小时加11)
  modified_time = now +timedelta(hours=11) 
  time_5= modified_time.strftime("%H:%M:%S")
  print(time_5)
else:
  print("输入有误重新输入")

计算三角形的三个角
# 输入三角形的三个顶点坐标,并计算该三角形的三个角分别是多少
 
 
import math
 
 
x1,y1,x2,y2,x3,y3=map(float,input("请输入顶点坐标,用空格隔开:").split())
# 计算三条边长
side1 = math.sqrt( (x1-x2)**2+(y1-y2)**2)
side2 = math.sqrt((x2-x3)**2+(y2-y3)**2)
side3 = math.sqrt((x1-x3)**2+(y1-y3)**2)
# 公式计算(弧度制)
cont1=math.acos((side1**2-side2**2-side3**2)/(-2*side2*side3))
cont2=math.acos((side2**2-side1**2-side3**2)/(-2*side1*side3))
cont3=math.acos((side3**2-side2**2-side1**2)/(-2*side1*side2))
# 将弧度制转化为角度制
angle_1=math.degrees(cont1)
angle_2=math.degrees(cont2)
angle_3=math.degrees(cont3)
print("%.2f\n%.2f\n%.2f\n"%(angle_1,angle_2,angle_3))
 
 

兑换最小数量的硬币
#题目 : 假设硬币种类分为:一元硬币、两角五分硬币、一角硬币、五分硬币、一分硬币
#输入总金额,并将总金额兑换成若干个硬币,并保证所兑换的硬币个数最少
 
 
# 兑换最小数量的硬币
money = float(input("请输入金额:"))
# 计算一元硬币
yuan = int(money)
print("有%s个一元硬币"%yuan)
# 计算剩下的钱
last = money - yuan
# 计算两角五分的硬币
money2_5 = (last)/0.25
print("有%s个两角五分的硬币"%int(money2_5))
# 更新剩下的钱
last = last - 0.25*int(money2_5)
# 计算一角硬币个数
money1 = last/0.1
print("有%s个一角硬币"%int(money1))
# 再次更新余额
last = last - int(money1)*0.1
# 计算五分硬币个数
money_5 = last/0.05
print("有%s个五分硬币"%int(money_5))
# 更新余额
last= last - int(money_5)*0.05
# 计算一分硬币
money_1 = last/0.01
print("有%s个一分硬币"%int(money_1))

正多边形的面积
#输入两个数据分别表示边的个数n和边的长度s,数据之间用空格分隔
#输出边长为s的正n多边形的面积,结果保留两位小数
 
import math
π = 3.14
side, lengs = map(float,input("请输入边的个数和长度用空格隔开:").split())
area = (side * lengs**2) / (4 * math.tan(π/side))
print("面积是%.2f"%area)
计算身体质量指数 
# 计算身体质量指数
 
 
weight ,high = map(int,input("输入体重和身高,数据之间用空格分隔:").split())
# 体重除以以米为单位的身高的平方
BMI = weight/(high**2)
if BMI<18.5:
  print("超轻")
elif BMI<25.0:
  print("标准")
elif BMI<30.0:
  print("超重")
elif BMI>=30.0:
  print("肥胖")
else:
  print("输入不合法,重新输入")

判定闰年
# 判定闰年
year = int (input("请输入想要知道年分:"))
if year%4==0 and year%100!=0 or year%400 == 0:
  print("yes") 
else :
  print("no")
中彩票
# 中彩票
 
 
import random
 
 
input_num = int (input("输入:"))
input_str =  str(input_num)
random_num = random.randint(10,99)
random_str = str(random_num)
print(random_num)
if input_num ==random_num:
  print("10000")
elif random_str[0] ==  input_str[1] and random_str[1] == input_str[0]:
  print("3000")
elif (random_str[0] == input_str[0] or random_str[0] == input_str[1])or(random_str[1] == input_str[0] or random_str[1] == input_str[1]) :
  print("1000")
else:
  print("0")

 解一元二次方程 
# 解一元二次方程
# ax^2+bx+c=0 
 
 
import math
 
 
a,b,c =  map(float,input("输入:").split())
if a==0:
  print("输入不合法")
elif b**2-4*a*c>0:
#  round(number[, ndigits])----四舍五入保留ndigits位小数
 print( round((-b+math.sqrt(b**2-4*a*c))/(2*a),2))
 print( round((-b-math.sqrt(b**2-4*a*c))/(2*a),2))
  
 
 
elif b**2-4*a*c==0:
  print(round((-b)/(2*a),2))
 
  
elif b**2-4*a*c<0:
  print("无实数解")

解2×2线程方程
# 解2×2线程方程
 
 
a,b,c,d,e,f = map(float,input("输入:").split())
# 前提:(ad - bc)不等于0
# x = (ed - bf) / (ad - bc)
# y = (af - ec) / (ad - bc)
if (a*d - b*c) ==0:
  print("无解")
else:
  x = (e*d - b*f) / (a*d - b*c)
  y = (a*f - e*c) / (a*d - b*c)
  print(x,y)
未来是周几
# 未来是周几
 
 
week ,future_day = map(int ,input("输入:").split())
day = (week+future_day)%7
if day == 0:
  print("星期天") 
if day == 1:
  print("星期一") 
if day == 2:
  print("星期二") 
if day == 3:
  print("星期三") 
if day == 4:
  print("星期四") 
if day == 5:
  print("星期五") 
if day == 6:
  print("星期六") 
 

本年中的第几天
year,month,day = map(int,input("输入").split())
# 定义每月的天数表
month_day =[0,31,28,31,30,31,30,31,31,30,31,30,31]
# 判断闰年,并对二月进行加一操作
if (year %4 ==0 and year%100 ==0) or year%400 == 0:
  month_day[2] += 1 
  
for i in range(0 , month):
  day += month_day[i]
 
print(day)
剪刀石头布
import random
 
 
use_num =int( input("输入:"))
com_num = random.randint(0,2)
# 定义一个方法:将数字和字符转换,
def vo(num):
  if num ==0:
    return " 剪刀"
  elif num == 1:
    return " 石头"
  elif num ==2:
    return " 布"
  else :
    return 0
    
# 对用户输入数据进行判断
if vo(use_num)==0:
  print("输入不合法")
  
else:
  print("计算机输出"+vo(com_num))
  print("用户出的"+vo(use_num))
 
  if com_num==use_num:
    print("平手")
  elif (com_num==1 and use_num==0) or(com_num==0 and use_num==2) or (com_num == 2 and use_num == 1):
    print("计算机赢")
  else:
    print("用户赢")

计算三角形的周长
# 输入三角形三边的长度,如果输入合法则计算周长并输出结果;否则输出非法
# 如果任意两边之和大于第三边则输入都是合法的
 
# 输入三个数据表示三边,数据之间用空格分隔
# 输出三角形的周长,如果非法则输出非法
 
 
side1,side2,side3 = map(int,input("输入:").split())
if side1+side2>side3 and side1+side3>side2 and side2+side3>side1:
  print(side1+side2+side3)
else:
  print("非法")
 
判断一年中某天是星期几
# 判断一年中某天是星期几
 
# 输入年、月、日三个数据,数据之间用空格分隔
# 输出该日是周几
 
year,month,day = map(int,input("输入:").split())
 
# 一月和二月都是按照前一年的13月和14月来计数的,所以还得把年份改为前一年
if month ==1 or month  == 2:
  year-=1
  month+=12
h =int((day+26*(month+1)//10+year%100+year%100//4+year/100//4+5*year/100)%7)
if h == 0:
  print("星期六")
elif h == 1:
  print("星期天")
elif h == 2:
  print("星期一")
elif h == 3:
  print("星期二")
elif h == 4:
  print("星期三")  
elif h == 5:
  print("星期四")
elif h == 6:
  print("星期五")

回文数
# 回文数
 
# 输入一个三位整数,然后判断其是否为一个回文数
# 如果一个数从左向右和从右向左读取时是一样的,那么这个数就是回文数
 
 
# 用户需要判断的数字
num = int (input("输入:"))
# num会在后续的操作中改值,所以需要定义一个变量存储num的值
tem =num
# 定义一个变量用于存储反转后的数字
change_num =0
while num >0:
 change_num *= 10
 change_num += num%10
 num //= 10 
 
if tem == change_num:
  print("yes")
else:
  print("no")

判断两个矩形之间的位置关系
# 判断两个矩形之间的位置关系
 
# 输入两行,每行四个数据,分别是矩形的中心坐标x、y和矩形的宽、高
# 输出两者的关系
 
 
x1,y1,winth1,high1 = map(float ,input("输入").split())
x2,y2,winth2,high2 = map(float ,input("输入").split())
#   包含:如果两个矩形的中心点之间的水平距离小于两个矩形宽度之和的一半,并且垂直距离小于两个矩形高度之和的一半,则两个矩形相交。
 
# 重叠: 如果一个矩形的中心点到另一个矩形的中心点的水平距离小于两个矩形宽度之差的一半,并且垂直距离小于两个矩形高度之差的一半
 
# 定义两个函数用于存储中心点的水平距离和垂直距离
level =abs(x1-x2) 
vertical = abs(y1-y2)
# 判断:
if level < (winth1+winth2)/2 and vertical<(high1+high2)/2:
  print("包含")
elif level<abs(winth1-winth2) and vertical<abs(high1-high2):
  print("重叠")
else:
  print("相离")

demo2
打印数字I
# 利用循环,寻找规律,打印如下数字模式:
#             1
#           2 1 2
#         3 2 1 2 3
#       4 3 2 1 2 3 4
#     5 4 3 2 1 2 3 4 5
#   6 5 4 3 2 1 2 3 4 5 6
# 7 6 5 4 3 2 1 2 3 4 5 6 7
 
# 用户输入打印的行数
rows = int(input("输入"))
 
 
def print_num (row):
  for i in range(1,rows+1):
    print(" "*(row*2-2*i),end="")
    for j in range(i,0,-1):
      print(str(j)+" ",end="")
    for j in range(2,i+1):
      print(str(j)+" ",end="")
    print()  
 
 
print_num(rows)

打印数字II
# 利用循环,寻找规律,打印如下数字模式:
      #         1 
      #       1 2 1
      #     1 2 4 2 1
      #   1 2 4 8 4 2 1
      # 1 2 4 8 16 8 4 2 1
 
 
# 用户输入需要的层数
row = int(input("输入"))
 
 
def print_row (row):
  
  for i in range(1,row+1):
    print(" "*(row*2-2*i),end="")
    num = 1
    for j in range(1,i*2):
 
      if j<i:
        print(str(num)+" ",end="")
        num*=2
      else:
        print(str(num)+" ",end="")
        num = int(num/2)
    print()
 
    
print_row(row)
 
 

打印菱形I
# 输出一个高度为9的菱形
 
#     *
#    * *
#   * * *
#  * * * *
# * * * * *
#  * * * *
#   * * *
#    * *
#     *
 
 
# 用户输入想要打印的层数
row = int (input("输入"))
 
 
def print_pic(row):
  for i in range(1,row+1):
    if i<row//2+1:
      print(" "*((row+1)//2-i),end="")
      print("* "*i)
    else:
      print(" "*(i-(row+1)//2),end="")
      print("* "*(row+1-i))
      
  
print_pic(row)

打印菱形II
# 打印空心菱形
#     *    
#    * *   
#   *   *  
#  *     * 
# *       *
#  *     * 
#   *   *  
#    * *   
#     *    
 
# 用户输入打印的行数
row = int(input("输入"))
 
 
def print_pic(row):
  for i in range(0,row):
    if i<row//2+1:
      print(" "*(row//2-i),end="")
      for j in range(i*2+1):
        if j ==0 or j==i*2:
          print("*",end="")
        else:
          print(" ",end="")
    else:
      print(" "*(i-row//2),end="")
      for j in range((row-i)*2-1):
        if j==0 or j == (row-i-1)*2:
          print("*",end="")
        else:
          print(" ",end="")
    print()
 
 
 
print_pic(row)

打印菱形III
# 打印如下菱形
#     *
#    ***
#   *****
#  *******
# *********
#  *******
#   *****
#    ***
#     *
 
 
row = int (input("输入"))
 
 
def print_pic(row):
  for i in range(1,row+1):
    if i<row/2:
      print(" "*(row//2-i+1),end="")
      print("*"*(i*2-1))
    else:
      print(" "*(i-row//2-1),end="")
      print("*"*((row - i)*2+1))
 
 
print_pic(row)
 

 猜数字
# 猜数字
 
# 计算机随机生成一个[0,100]之间的整数,程序提示用户连续地输入数字直到它与那个随机生成的数字相同
# 对于用户输入的数字,程序会提示它是过高还是过低
 
 
import random
 
 
computer_random = random.randint(0,101)
person_input = int(input("输入"))
while computer_random != person_input:
  if computer_random>person_input:
    print("低了")
  else:
    print("高了")
  person_input = int(input("输入"))
print(f"猜中了答案就是{person_input}")

最大公约数**辗转相除法**
# 输入两个正整数,计算其最大公约数,例如4和2的最大公约数是2,16和24的最大公约数是8
 
# 两个正整数a和b(a>b)的最大公约数等于a除以b的余数r和b之间的最大公约数————例如:要找到48和18的最大公约数,可以按照以下步骤进行计算:
# 48 ÷ 18 = 2 余 12
# 18 ÷ 12 = 1 余 6
# 12 ÷ 6 = 2 余 0
 
num1,num2 =map(int,input("输入").split())
 
 
def gcd(num1, num2):
    if num2 == 0:
        return num1
    else:
        return gcd(num2, num1 % num2)
    
 
print(gcd(num1,num2))

判断素数**试除法**
# 判断素数
 
 
import math
 
 
num = int(input("输入"))
 
 
# 方法一
def prime_1 (num):
  if num<2:
    return False
  else:
    for i in range(2,int(math.sqrt(num)+1)):
      if num % i == 0:  
        return False
    return True
  
 
#-------------------------------------------------------------------------------------
 
 
# 方法二(试除法,速度更快):
def prime_2(num):
  if num < 2:
    return False 
  elif num == 2 or num == 3:
    return True
  elif num % 2 == 0 or num %3 == 0:
      return False
    
  sqrt_num =int( math.sqrt(num))
  k = 1
  while 6 * k - 1 <= sqrt_num:   
    if num % (k * 6 -1) == 0 or num %( k * 6 + 1) == 0: 
      return False
    k += 1
  return True
 
 
flag = prime_1(num)
if flag:
  print("yes")
else:
  print("no")  
 
 
 

最小公倍数
# 输入两个正整数,计算其最小公倍数,例如4和2的最小公倍数是4,3和5的最小公倍数是15
 
# 两个数的乘积等于这两个数的最大公约数和最小公倍数的乘积
 
num1 ,num2 = map(int,input("输入").split())
 
 
def gcd(num1,num2):
  """
  求最小公倍数的函数
  """
  while num1:
    return gcd(num2%num1,num1)
  else:
    return num2
 
 
def lcm(num1,num2):
  """
  求最大公约数
  """
  return num1*num2//gcd(num1,num2)
 
 
print(lcm(num1,num2))

整数的素因子
# 输入一个正整数,然后找出它所有的最小因子,也称之为素因子
 
 
num = int(input("输入"))
 
 
def prime(num):
  """
  求素因子
  """
  arr=[]
  i = 2
  while i * i <= num :
    if num % i == 0:
      arr.append(i)
    else:
      i += 1
  if num > 1 :
    arr.append(num)
  return arr
 
 
print(prime(num))

完全数
# 如果一个正整数等于除了它本身之外所有正因子的和,那么这个数称为完全数
 
 
num = int(input("输入"))
 
 
def perfect_num (num):
  sum = 1
  for i in range (2,num//2+1):
    if num % i == 0:
      sum += i
  if num == sum:
    return True
  else:
    return False
 
 
if perfect_num(num):
  print("yes")
else:
  print("no")

前50个素数
# 打印前50个素数,每打印10个素数换行
import math
 
 
arr = []
 
 
def prime_num (num):
  if num<2:
    return False
  elif num == 2 or num == 3:
    return True
  elif num %2 == 0 or num%3 == 0:
    return False
  
  sqrt_num = int(math.sqrt(num))
  i = 1
  while 6* i -1 <=sqrt_num:
    if num%(6* i -1 )==  0 or num %(6*i +1) == 0:
      return False
    i+=1
  return True
 
 
num = 2
i = 1
while i <51:
  if prime_num(num):
    arr.append(num)
    i+=1
  num+=1
 
i = 1
while i <= 50:
  
  print(str(arr[i-1])+" ",end="")
  if  i % 10 == 0:
    print()
  i+=1

计算π
# 计算π
 
i = int (input("输入"))
 
 
def get_π(i):
  num = 0
  for i in range(1,i+1):
   num +=  (-1)**(i+1)/(2*i-1)
  num *= 4
  return num
 
 
print(get_π(i))
修改猜拳游戏
# 延伸【Demo21剪刀石头布I】的问题,利用循环将程序改为,计算机和电脑谁先赢三次,谁就是终极胜利者
 
 
import random
 
count_use = 0
count_com = 0
while True:
  use_num =int( input("输入:"))
  com_num = random.randint(0,2)
  # 定义一个方法:将数字和字符转换,
  def vo(num):
    if num ==0:
      return " 剪刀"
    elif num == 1:
      return " 石头"
    elif num ==2:
      return " 布"
    else :
      return 0
      
  # 对用户输入数据进行判断
  if vo(use_num)==0 :
    print("输入不合法")
    continue
    
  else:
    print("计算机输出"+vo(com_num))
    print("用户出的"+vo(use_num))
  
    if com_num==use_num:
        print("平手")
    elif (com_num==1 and use_num==0) or(com_num==0 and use_num==2) or (com_num == 2 and use_num == 1):
        count_com += 1
        print("计算机赢"+str(count_com)+"回")
      
    else:
        count_use +=1
        print("用户赢了"+str(count_use)+"回")
      
    if count_use ==3:
        print("用户获得了胜利")
        break
    elif count_com == 3:
        print("电脑获得了胜利")
        break
 

数字组合问题
# 组合问题
 
# 在数字范围[1,7]之间,任意选择两个不相同的数作为一个组合
#,输出每一组组合,并统计所有组合的个数
# 注:组合(a,b)与组合(b,a)算同一种组合,只记录一次
 
arr = [1,2,3,4,5,6,7]
count = 0
for i in range(1,7):
  for j in range(2,8):
    if i != j:
      print(f"[{i} {j}]",end="")
      count +=1
print(f"共有{count}个组合")
 
# 组合问题II
# 组合问题II
 
arr =[1,2,3,4]
 
count = 0
for i in range(1,len(arr)-1):
  for j in range(2,len(arr)):
    for p in range(3,len(arr)+1):
      if i!=j and j != p:
        print(f"[{i} {j} {p}]",end="")
        count += 1
print("\n"+str(count))
 
水仙花数
# 水仙花数,是一个三位数,且这个数的个位、十位和百位的立方和等于该数字本身
 
 
def get_num(num):
  if (num%10)**3+(num//100)**3+(num//10%10)**3 == num:
    return True
  else:
    return False
 
 
for i in range(100,1000):
  if get_num(i):
    print(i)
  
青蛙跳台阶
# 一只青蛙,一次可以跳一个台阶或者两个台阶,现有n个台阶,问该青蛙有多少种不同的跳法?
 
 
step = int (input("输入"))
 
 
def get_way (step):
  if step %2 != 0:
    step -= 1
  most_step = step
  less_step = step//2
  count = 0
  count = most_step - less_step + 1
  return count
 
 
print(get_way(step))
 
 

堆叠相加
# 现有堆叠相加模式 a+aa+aaa+aaaa+aaaaa+......
 
# 输入两个数据分别为数字a和组数n
# 输出按照堆叠相加模式算出的和
 
 
num , group = map(int ,input("输入").split())
 
 
def get_num(num,group):
  sum = 0
  for i in range(1,group+1): 
    sum += int(str(num)*i)
  return sum
  
 
print(get_num(num,group))

十进制转二进制
# 输入一个十进制正整数,输出其二进制形式
 
 
num = int (input("输入"))
 
 
def change_num(num):
  str_num = ''
  num_changed = 0
  while num > 0:
    ge = num % 2
    num //= 2
    str_num += str(ge)
  for i in range(len(str_num)-1,-1,-1):
    num_changed *= 10
    num_changed += int(str_num[i])
  return num_changed
 
 
print(change_num(num))

二进制转十进制
# 二进制转十进制
 
 
num = int(input("输入"))
 
 
def change_num (num):
  all = 0
  str_num = str(num)
  for i in range(0,len(str_num)):
    all += int(str_num[i])
    if i == len(str_num)-1: 
      return all
    all *= 2 
 
 
 
print(change_num(num))

十进制转十六进制
# 十进制转十六进制
 
 
num = int(input("输入:"))
 
 
def change_num(num):
  ox_num = "0123456789ABCDEF"
  fin_num = ""
  while num > 0:
    get_num = num % 16
    num //= 16
    fin_num = ox_num[get_num] + fin_num  
  return fin_num
 
 
print(change_num(num))
      

十六进制转十进制 
# 十六进制转十进制
 
 
num = str(input("输入:"))
 
 
def change_num(num):
  ox_num = "0123456789abcdef"
  all = 0
  len_num = len(num)
  for j in num:
    for i in ox_num:
      if i == j:
        all += ox_num.index(i)* 16 ** (len_num-1)
        len_num -= 1
  return all
  
 
print(change_num(num))
        

最长公共前缀**zip**
# 给定两个字符串 s1 和 s2 ,求两个字符串最长的公共前缀串,字符区分大小写
 
 
str1 = str(input("输入"))
str2 = str(input())
 
 
 
def judge_str (str1,str2):
  new_str = ""
  
  for i,j in zip(str1,str2):
# zip() 函数来同时遍历两个字符串。
# 如果两个字符串的长度不相等,zip() 函数将会以较短的字符串为准,忽略超过其长度的部分。
    if i == j :
      new_str += i
    else:
      break
  return new_str
 
 
print(judge_str(str1,str2))

子串出现的次数
# 给定两个字符串 s1 和 s2 ,求 s2 在 s1 中出现的次数,
#字符区分大小写,已匹配的字符不计入下一次匹配
 
 
str1 = str(input("输入"))
str2 = str(input("输入"))
 
 
def judge_str(str1,str2):
  count = 0
  index_str1 = 0
  while index_str1 <= len(str1)-len(str2) :
      flog = True
      tem = index_str1
      for i in str2:
        if str1[tem] == i:
          tem += 1
        else:
            index_str1 += 1
            flog = False
            break
      if flog:
        count += 1
        index_str1 += len(str2)
      
  return count
 
      
print(judge_str(str1,str2))

 最长公共子串**todo**
Todo

检测密码
# 一些网站会给密码强加一些规则:
# (1)密码必须至少有8个字符
# (2)密码只能包含英文字母和数字
# (3)密码应该至少包含两个数字
# (4)密码应该至少包含两个大写字母
# 如果密码符合规则,输出Yes;否则输出No
 
 
s1 = str(input("输入"))
 
 
def string_pass(s1):
  get_num = 0
  get_capital = 0
  if len(s1)<8:
    return "no"
  for i in s1:
    if ord(i)<48 or 57<ord(i)<65 or 90<ord(i)< 96 or ord(i)>122:
      return "no"
    if 47<ord(i)<58:
      get_num += 1
    if 64<ord(i)<91:
      get_capital += 1
  if get_num < 2:
    return "no"
  if get_capital< 2:
    return "no"
  return "yes"
 
 
print(string_pass(s1))

回文素数
# 回文素数是指一个数既是素数又是回文数,例如131既是素数也是回文数
# 输出显示前100个回文素数,每行显示10个
 
 
import math
 
 
# 找素数的函数
def find_prime(num):
  if num < 2 :
    return False
  if num == 2 or num == 3:
    return True
  elif num % 2 == 0:
    return False
  elif num % 3 == 0:
    return False
  
  sqrt = int(math.sqrt(num))
  i = 1
  while (6*i-1) < sqrt :
    if num % (6*i-1) == 0 or num % (6*i+1) == 0:
      return False
    i += 1
  else:
      return True
  
 
# 找回文数
def find_palindromic(num):
  str_num = str(num)
  i = 0
  j = len(str_num)-1
  while i < j:
    if str_num[i] != str_num[j]:
      return False
    i += 1
    j -= 1
  return True  
 
i = 100
count = 0
while count < 100:
  if find_prime(i) and find_palindromic(i):
    print(str(i) +" ",end="")
    count += 1
    if count % 10 == 0:
      print()
  i += 1

反素数**切片:slice**
# 反素数是指一个将其逆向拼写后也是一个素数的非回文数,例如17和71都是素数但不是回文数,且反转后依旧是素数
# 输出显示前100个反素数,每行显示10个
 
 
import math
 
 
# 质数
def is_prime(num):
  if num<2:
    return False
  if num == 2 or num ==3:
    return True
  if num % 2 == 0 or num % 3 == 0:
    return False
  
  sqrt_num =int(math.sqrt(num))
  k = 1
  while (6*k-1)<sqrt_num:
    if num % (6*k-1) == 0 or num % (6*k+1) == 0:
      return False
    k += 1
  return True
 
 
# 回文数
def is_palindromic (num):
  str_num =  str(num)
  i = 0
  j = len(str_num)-1
  while i < j:
    if str_num[i] != str_num[j]:
      return False
    i += 1
    j -= 1
  return True
 
 
 
# 反转
def get_sort_num(num):
  str_num = str(num)
  reversed_str =  str_num[::-1]
  return int(reversed_str)
 
count = 0
i = 17
while count < 100:
  if is_prime(i) and is_prime(get_sort_num(i))  and not is_palindromic(i):
    print (str(i)+" ",end="")
    count += 1
    if count % 10 == 0:
      print()
  i += 1
 
 

双素数
# 双素数是指一对差值为2的素数,例如3和5就是一对双素数,5和7也是一对双素数
# 输出显示小于1000的双素数
 
 
import math
 
 
# 质数
def is_prime(num):
  if num<2:
    return False
  if num == 2 or num ==3:
    return True
  if num % 2 == 0 or num % 3 == 0:
    return False
  
  sqrt_num =int(math.sqrt(num))
  k = 1
  while (6*k-1)<sqrt_num:
    if num % (6*k-1) == 0 or num % (6*k+1) == 0:
      return False
    k += 1
  return True
 
 
i = 1
while i+2 < 1000:
  if is_prime(i):
    if is_prime(i+2):
      print(f"[{i},{i+2}] ",end="")
  i += 2

梅森素数
# 如果一个素数可以写成2**p-1的形式,其中p是某个正整数,那么这个素数就称作梅森素数
# 输出p≤31的所有梅森素数
 
 
import math
 
 
# 质数
def is_prime(num):
  if num<2:
    return False
  if num == 2 or num ==3:
    return True
  if num % 2 == 0 or num % 3 == 0:
    return False
  
  sqrt_num =int(math.sqrt(num))
  k = 1
  while (6*k-1)<sqrt_num:
    if num % (6*k-1) == 0 or num % (6*k+1) == 0:
      return False
    k += 1
  return True
 
 
p = 1
while p < 32:
  if is_prime(2**p-1):
    print(2**p-1)
  p +=1
 

平方根的近似求法
# 平方根的近似求法
#方法:nextGuess=(lastGuess+n/lasetGuess)/2
#当nextGuess和lastGuess几乎相同时,nextGuess就是平方根的近似值
#lastGuess初始值为1,如果nextGuess和lastGuess的差值小于一个很小的数,比如0.0001,就可以认为#nextGuess是n的平方根的近似值;否则,nextGuess成为下一次计算的lastGuess,近似过程继续执行
 
 
n = eval(input("输入"))
def get_num(n,last_guess):
 
  nextguess = (last_guess+n/last_guess)/2
  if abs(nextguess - last_guess) <0.0001:
    return (nextguess)
  else: 
    return get_num (n,nextguess)
print(get_num(n,1))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值