解题思路:列数学表达式计算
原始代码:
# -*- 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
做题思路:分别存储输入的三个数,依次排序并交换
# -*- 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
int(N)是将N强制转换成int类型,sqrt(n)是平方根函数,int(sqrt(n))是先对n进行平方运算,然后再将运算结果强制转换成int类型