Python版本:3.6
讲真,前四道题我都不想写出来的因为太简单。。。
但抛砖引玉,我还是稍微献丑一下
3.1
# -*- coding: utf-8 -*-
i,r=1,0
while(i<=100):r+=i;i+=1
print(r)
其实第一题用for循环可能更简单一些
3.2
# -*- coding: utf-8 -*-
i,r=10,0
while(i>=1):
r+=i
i-=1
print(r)
基础题
3.3
# -*- coding: utf-8 -*-
i,r=1,0
while(i<=99):
r+=i
i+=2
print(r)
我还是坚持使用while循环到了第三题
3.4
# -*- coding: utf-8 -*-
i,r=2,0
while(i<=100):
r+=i
i+=2
print(r)
以及第四题。。。
3.5
# -*- coding: utf-8 -*-
i=2000
while i<3000:
if i%100==0 and i%400!=0:
i+=4
continue
print(i,end=' ')
i+=4
print()
for i in range(2000,3000,4):
if i%100==0 and i%400!=0:
continue
print(i,end=' ')
题目说的是使用不同的实现方法,我想的当然就是用不同的循环了(什么你说除法?我听不见)
之前代码有点BUG,已修正。
图1 3.5运行结果
结果看得我头晕
3.6
# -*- coding: utf-8 -*-
n=int(input('输入需要计算的项数n:'))
r=0
for i in range(1,n+1):
if i%2==0:r-=2*i-1
else:r+=2*i-1
print('Sn的结果为:',r)
这道题的结果就是奇数为n,偶数为-n,差点我就想这么写了
3.7
# -*- coding: utf-8 -*-
n=int(input('输入需要计算的项数n:'))
r=0
for i in range(1,n+1):r+=1/i
print('Sn的结果为:',r)
一开始我是想写一个亿,但是输入之后我的破电脑没有反应,那就只好一千万了
图2 3.7运行结果
3.8
# -*- coding: utf-8 -*-
print('矩形九九乘法表:')
for i in range(1,10):
s=''
for j in range(1,10):
s+=str.format('{0:1}*{1:1}={2:>2}|',i,j,i*j)
print(s)
print('下三角九九乘法表:')
for i in range(1,10):
s=''
for j in range(1,10):
s+=str.format('{0:1}*{1:1}={2:>2}|',i,j,i*j)
if j==i:break
print(s)
print('上三角九九乘法表:')
for i in range(1,10):
s=''
for j in range(1,10):
if j2}|',i,j,i*j)
print(s)
矩形乘法表的实现,前面有例题,稍作修改,就可以实现上下三角了
图3 3.8运行效果
3.9
# -*- coding: utf-8 -*-
import math
a=float(input('请输入三角形的边A:'))
b=float(input('请输入三角形的边B:'))
c=float(input('请输入三角形的边C:'))
if a<=0 or b<=0 or c<=0 or a+b<=c or a+c<=b or b+c<=a:print('这样的三条边无法构成三角形!')
else:
print(str.format('三角形三边分别为:a={},b={},c={}',a,b,c))
h=(a+b+c)/2
s=math.sqrt(h*(h-a)*(h-b)*(h-c))
print(str.format('三角形的周长={0:.1},面积={1:.1}',2*h,s))
我记得我上学期Java上机考试就是抽到这个题,好亲切。运行效果和书上一样,我就不截图了
3.10
# -*- coding: utf-8 -*-
import math
x=float(input('请输入X:'))
if x>=0:y=(x*x-3*x)/(x+1)+2*math.pi+math.sin(x)
if x< 0:y=math.log(-5*x)+6*math.sqrt((-x+math.e**4))-(x+1)**3
print('方法一:x={0},y={1}',x,y)#一句单分支会导致错误
print('方法二:x={0},y={1}',x,y)
if x>=0:y=(x*x-3*x)/(x+1)+2*math.pi+math.sin(x)
else:y=math.log(-5*x)+6*math.sqrt((-x+math.e**4))-(x+1)**3
print('方法三:x={0},y={1}',x,y)
y=(x*x-3*x)/(x+1)+2*math.pi+math.sin(x)if(x>=0)else\
math.log(-5*x)+6*math.sqrt((-x+math.e**4))-(x+1)**3
print('方法四:x={0},y={1}',x,y)
像我注释里说得那样,用一句单分支可能会导致错误,所以我就没有写一句单分支
3.11
# -*- coding: utf-8 -*-
import math
a=float(input('请输入系数a:'))
b=float(input('请输入系数b:'))
c=float(input('请输入系数c:'))
d=b*b-4*a*c
if a==0 and b==0:print('此方程无解!')
elif a==0:print('此方程的解为:',-c/b)
elif d==0:print('此方程有两个相等实根:',-b/2*a)
elif d>0:print(str.format('此方程有两个不等实根:{}和{}',(math.sqrt(d)-b)/2*a,-(b+math.sqrt(d))/2*a))
elif d<0:print(str.format('此方程有两个共轭复根:{0}+{1}i和{0}-{1}i',-b/2*a,math.sqrt(-d)/2*a))
如果对负数开平方根的话还是会报错的。
如果我中学做方程题的时候有这些该有多好。
3.12
# -*- coding: utf-8 -*-
n=-1
s=1
while n<0:
n=int(input('请输入非负整数:'))
if n==0:print('0!=1')
else:
for i in range(1,n+1):
s*=i
print(str.format(' for循环:{}!={}',n,s))
s=i=1
while i<=n:
s*=i
i+=1
print(str.format('while循环:{}!={}',n,s))
还是有bug,如果输入小数还是会报错。。。继续学习
3.13
# -*- coding: utf-8 -*-
import random
a=random.randint(0,100)
b=random.randint(0,100)
def gcd(x, y):
return x if y == 0 else gcd(y, x%y)
print(str.format('整数1={},整数2={}',a,b))
print(str.format('最大公约数={},最小公倍数={}',gcd(a,b),int(a*b/gcd(a,b))))
0和任意正整数的最大公约数为0,是吧?
感觉Python课的进度好快啊。。。