Python基础练习——完全平方数,数字排序

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

解题思路:列数学表达式计算
原始代码:

# -*- coding: UTF-8 -*-
# 文件名:test_03.py
from cmath import sqrt
for s in xrange(1,10000):
    a=sqrt(s+100)
    b=sqrt(s+268)
    if((a*a==s+100) and (b*b==s+268)):
        print s

错误归纳:
1、math和cmath的差别如下:
**math提供对实数的支持。**math模块实现了许多对浮点数的数学运算函数,这些函数一般是对平台C库中同名函数的简单封装。
Python提供对于复数运算的支持,复数在Python中的表达式为C==c.real + c.imag*j,python支持它的加减乘除运算,同时提供cmath模块对复数其他复杂运算进行支持。
2、math.sqrt(x)返回的是float,实际上得到的结果是小数,所以再平方回去实际上还是等于原来那个数,因此需要int转换一下。
修改后代码如下:

# -*- coding: UTF-8 -*-
# 文件名:test_03.py
import math
for s in xrange(1,10000):
    a=int(math.sqrt(s+100))
    b=int(math.sqrt(s+268))
    if((a*a==s+100) and (b*b==s+268)):
        print s

题目二、输入三个整数x,y,z,请把这三个数由小到大输出。

做题思路:分别存储输入的三个数,依次排序并交换

# -*- coding:utf-8 -*-
x=int(raw_input("请输入第一个整数:"))
y=int(raw_input("请输入第二个整数:"))
z=int(raw_input("请输入第三个整数:"))
if x>y:
    x,y=y,x
if x>z:
    x,z=z,x
if y>z:
    y,z=z,y
print "三个数从小到大为:%d,%d,%d"%(x,y,z)

错误归纳:
1、以上正确,注意输出多个变量需要输出一个元组,元组是要用括号括起来的。把多个变量组成一个元组再操作会显得更加清晰——即下列temptuple。
2、交换两个数,x ,y=y ,x

# -*- coding:utf-8 -*-
x=int(raw_input("请输入第一个整数:"))
y=int(raw_input("请输入第二个整数:"))
z=int(raw_input("请输入第三个整数:"))
if x>y:
    x,y=y,x
if x>z:
    x,z=z,x
if y>z:
    y,z=z,y
temptuple=(x,y,z)
print "三个数从小到大为:%d,%d,%d"%temptuple

在 Python3中表现如下

wrong
right
int(N)是将N强制转换成int类型,sqrt(n)是平方根函数,int(sqrt(n))是先对n进行平方运算,然后再将运算结果强制转换成int类型

猜你喜欢

转载自blog.csdn.net/lyycasablanca000/article/details/56285538