python基础必练题!!

打印 上一主题 下一主题

主题 1780|帖子 1780|积分 5340

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
水仙花数
  1. 水仙花数
  2. info = 3
  3. while info:
  4.     # 用户输入数字
  5.     try:
  6.         print(f"请输入数字,您有{info}次机会!!")
  7.         num = int(input("请输入100-999的数字:"))
  8.         if num<100 or num>999:
  9.             info -= 1
  10.             print(f"请输入合法数字!!!您还有{info}次机会!!")
  11.             continue
  12.         b = num //100 # 取百位
  13.         s = num //10%10  # 取十位
  14.         g = num % 10  # 取个位
  15.         if b**3+s**3+g**3 == num:
  16.             print(f"{num}:这个数是水仙花数")
  17.             break
  18.         else:
  19.             print(f"{num}:这个数不是水仙花数")
  20.             info -= 1
  21.     except:
  22.         print(f"请输入数字!!!您还有{info}次机会!!")
  23.         info -= 1
复制代码
插入排序
  1. 插入排序
  2. # 定义列表
  3. nums  = [87,38,77,2,33,98,73,22,12]
  4. for i in range(len(nums)):
  5.     # 判断 <右边的元素> 是否小于 <左边元素>
  6.     # 如果 小于,则将两个元素交换位置,就变成“小在左,大在右了”
  7.     while nums[i] < nums[i-1] and i>=1:
  8.         nums[i],nums[i-1] = nums[i-1],nums[i]
  9.         i -= 1
复制代码
冒泡排序
  1. 冒泡排序
  2. # 定义列表
  3. nums  = [87,99,17,2,33,68,73,22,12]
  4. # 遍历的次数是列表长度 减一
  5. # 相当于要冒泡几轮
  6. for i in range(len(nums)-1):
  7.     # 每轮冒泡的次数,
  8.     # -i 是因为 :上轮将大的数已经排在后面,所以后面的就不再参与
  9.     for j in range(len(nums)-1-i):
  10.         if nums[j] > nums[j+1] :
  11.             # 比较左边 ‘nums[j]’ 和右边 'nums[j+1]' 的元素 换位
  12.             nums[j],nums[j+1] = nums[j+1],nums[j]
  13. print(nums)
复制代码
百鸡百钱
  1. 百鸡百钱
  2. 题干:公5,母3,小1/3
  3. 公鸡x  母鸡y  小鸡z  加起来要 100 只
  4. 5x+3y+z/3=100
  5. ---------------------------------------
  6. count = 0
  7. for x in range(1,20):
  8.     # 因为公鸡数量不会超过20
  9.     for y in range(1,33):
  10.     # 母鸡数量不超过33
  11.         # 小鸡的数量
  12.         z = 100 - x - y
  13.         if z != 0 and 5*x+3*y+z/3 == 100:
  14.             count += 1 # 每次方法记录加一
  15.             print(f"第{count}种方法:{x}只公鸡,{y}只母鸡,{z}只小鸡")
复制代码
最小公倍数
  1. 最小公倍数
  2. num1 = int(input("请输入数字1:"))
  3. num2 = int(input("请输入数字2:"))
  4. if num1 < num2 :
  5.     num1,num2 = num2,num1
  6. else:
  7.     num1,num2 = num1,num2
  8. for i in range(num1,num1*num2+1):
  9.     if i%num1==0 and i%num2==0:
  10.         print(f"{i}是{num1}和{num2}的最小公倍数")
复制代码
二分查找

首要条件:被查询的序列,必须是有序的。
target : 目标
  1. target = n
  2. left = 0  # 左下标/索引
  3. right = len(lis)-1  # 右下标/索引
  4. while left <= right:
  5.     # 找到列表中间索引
  6.     mid = (left+right)//2
  7.     if lis[mid] > target:
  8.         # 如果中间值大于目标值,说明目标值在中间值左边
  9.         # 所以需要修改右下标。
  10.         right = mid-1  
  11.     elif lis[mid] < target:
  12.         # 如果中间值小于目标值,说明目标值在中间值右边
  13.         # 所以需要修改左下标。
  14.         left = mid + 1
  15.     else:
  16.         print(f"该数字的下标为{mid}")
  17.         break
  18. else:
  19.         print("该目标不在序列中……")
复制代码
猜年龄-妹妹几岁了

小明带两个妹妹参加元宵灯会。别人问她们多大了,他们调皮地说:“我们两个的年龄之积是年龄之和的六倍。”小明又补充说:“他们可不是双胞胎,年龄差也不超过8岁。”请写出,较小妹妹的年龄?
  1. 实现思路:
  2.         1、两个妹妹不是双胞胎,年纪肯定不一样
  3.         2、年龄积是年龄和的六倍
复制代码
[code]for i in range(1,100):  # 假设姐姐的年龄    for j in range(1,i):  # 假设妹妹的年龄        if i*j==6*(i+j) and i-j
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表