IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python经典编程习题100题之第3题:判断完全平方数 -> 正文阅读

[Python知识库]Python经典编程习题100题之第3题:判断完全平方数


前言

记录学习Python经典编程习题100例
参考
题目来源和参考-魏宝航

第3例:判断完全平方数

题目描述:

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

解题思路:

分别进行判断是否能进行开平方

我方法的代码:

def wanQuan(x):
    # 输入一个值,判断是否满足加上100后是一个完全平方数,再加上168又是一个完全平方数的条件
    a = False
    for i in range(10000):
        if a == 1:
            break
        else:
            if i*i == x+100 :
                for j in range(10000):
                    if j*j == x+268:
                        a = True
                        # print("第3个错误处")
                        break
                    else:
                        a = False
                        # print("第2个错误处")
            else:
                a = False
                # print("第1个错误处"+str(i))
    return a


x = 0
for x in range(-99,10000):
    while 1 :
        a = wanQuan(x)
        if a == False:
            break
        else:
            print("该数为:" + str(x))
            break

学习的代码:

x=0
for x in range(-100,10000):
    flag1=0
    flag2=0
    for i in range(10000):
        if i*i==x+100:
            flag1=1
            break
    for i in range(10000):
        if i*i==x+100+168:
            flag2=1
            break
    if flag1 and flag2:
        print(x)

其思路是:

暴力计算
用两个for循环分别判断是否满足两次完全平方

不同之处在于

1.我将其整合成函数形式
2.我先进第一个完全平方判断,如果第一个不满足就不进行第二完全平方判断

遇到的问题总结

错误的代码1

import cmath
def wanQuan(x):
    # 输入一个值,判断是否满足加上100后是一个完全平方数,再加上168又是一个完全平方数的条件
    if cmath.sqrt((x+100)) == 0 :
        print("对")
        if cmath.sqrt((x+268)) == 0 :
            return True
    else:
        return False


a = False
x = -99
while False :
    a = wanQuan(x)
    if a == False:
        x += 1
    else:
        print("该数为:" + str(x))
        break

错误思考

1.错误的认为把开方后的数就等于0
2.可以进一步思考,是否有类似判断开方后为整数的方式
错误代码2

def wanQuan(x):
    # 输入一个值,判断是否满足加上100后是一个完全平方数,再加上168又是一个完全平方数的条件
    for i in range(10000):
        if i*i == x+100:
            for j in range(10000):
                if j*j == x+268:
                    a = True
                    break
                else:
                    a = False
                    print("第2个错误处")
        else:
            a = False
            print("第1个错误处")
            break
    return a

错误思考

该函数,如果i值不满足i*i==x的话,for第一次就跳出循环,这样是不对的,原本for的目的是检索该循环是否有满足完全平方的条件,有满足两次完全平方就跳出,没有就结束

注意

要避免陷入思维陷阱,每一次dug都对每一处进行排查,不能习惯性的认为没有错

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 18:07:23  更:2022-05-24 18:09:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:08:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码