python考前突击_[python错误]考前攻击、控制和结构,Python,错题,突击,与

#如果您不幸读到这篇文章,那欢迎指正

救救期末火葬场的孩子TAT

第四章 控制与结构

结构:顺序,选择,循环

1.选择结构if

选择结构不能循环使用……

基本结构:

if 条件:单条语句

if 条件:

^^^^^^语句块

if 条件:

^^^^^^语句块

else:

^^^^^^语句块

以下是示例程序

程序清单4.1 条件赋值

#程序清单4.1 条件赋值

a=eval(input('请输入一个数:'))

x=3*a-1 if a<=5 else 38-a #第一段在if前

print('x=',x) #if else 中都没有冒号

#这样做的话【if和else必成行】

#程序清单4.2 北斗七星数数哈哈哈

#程序清单4.2 北斗七星

n=int(input('请输入一个七位数:'))

s=str(n) #先把n转化为字符串以拆分位数

a=int(s[0])

b=int(s[1])

c=int(s[2])

d=int(s[3])

e=int(s[4])

f=int(s[5])

g=int(s[6])

if n==pow(a,4)+pow(b,4)+pow(c,4)+pow(d,4)+pow(e,4)+pow(f,4)+pow(g,4):#注意冒号

print('%7d是北斗七星数'%n)

else:

print('%7d不是北斗七星数'%n)

科普一下:

1位自幂数:独身数 0,1,2,3,4,5,6,7,8,9

3位自幂数:水仙花数 153,370,371,407;

4位自幂数:四叶玫瑰数 1634,8208,9474;

5位自幂数:五角星数 54748,92727,93084;

6位自幂数:六合数 548834;

7位自幂数:北斗七星数 1741725,4210818,9800817,9926315;

8位自幂数:八仙数 24678050,24678051,88593477;

9位自幂数:九九重阳数 146511208,472335975,534494836,912985153;

10位自幂数:十全十美数 4679307774

#程序清单4.3嵌套if示例

#程序清单4.3嵌套if示例

#成绩等级转换

x=eval(input('请输入一个百分制成绩:'))

if x<0 or x>100:

print('成绩有误,请重试!')

else:

if x<60:

y='不及格' #用y赋值,程序简洁

elif x>=60 and x<70:

y='及格'

elif x>=70 and x<80:

y='中'

elif x>=80 and x<90:

y='良'

else:

y='优'

print('成绩:%.2f'%x)

print('等级:',y)

2.循环结构

循环结构主要是多练多分析,以下是不擅长的程序

个人认为在python中for比while好用太多

阶乘类

阶乘初步

#阶乘初步

n=int(input('输入正整数:'))

s=1

for i in range(1,n+1):

s*=i

print('n!=',s)

奇数阶乘:

需要用到嵌套for,内层for是为了每一个n!的计算

外层for每次都要t=1

N=int(input('输入一个奇数:'))

sum=0

if N%2==0 or N<1:#确认是否为奇数

print('数据有误,请重试!')#判断过程可略

N=int(input('输入一个奇数:'))

else:

for i in range(1,N+1,2):

t=1 #每次外层前都一定要t=1!!

for j in range(1,i+1):

t*=j

sum+=t

print('1!+3!+5!+……+N!=%d'%(sum))

除式阶乘

x=float(input('输入实数x=:'))

n=int(input('输入整数n='))

s=0

t=1

for i in range(1,n+1):

t*=i#储分子存阶乘

s+=(x**i)/t#(x**t)是很危险的写法,但很方便

print('f(%.2f,%d)=%.f'%(x,n,s))

三角形

对三角形真的有够恐惧

明白它的基本思路是找出空白与图案的数学关系,但在结构隶属上没做好

python的重复打印很好用!!!

图案类*

#等腰三角形

空格数=n-i

#等腰三角形

n=int(input('输入整数:'))

for i in range(1,n+1): #一个五角星=一个空格

print(' '*(n-i),'*'*(2*i-1),sep='') #以五行为例,找出空格规律

#右对齐

和等腰三角形思路一样,只不过打印的星号变少了

字母类

#字母类

n=int(input('输入整数:'))

for i in range(1,n+1):

print(' '*(n-i),chr(64+i)*(2*i-1),sep='') #换成chr即可

print()

右九九乘法表

#这个题目的难点在于:填充空格的表示,以及结果两位数

我本想如左乘法表一般用s=(str(i)+’

’+str(j)+’=’+str(i

j)

字符串形式来打印,但在这个方法会导致结果为两位数时,字节溢出

就像这样:

#右上角九九

for i in range(1,10):

print(' '*7*(i-1),end='') #将填充写在外围,也就是每行开头

for j in range(i,10):

print('%d*%d=%2d'%(i,j,i*j),end=' ')

print() #每行结束,也要写在外围

运行结果:

1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9

2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18

3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27

4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36

5*5=25 5*6=30 5*7=35 5*8=40 5*9=45

6*6=36 6*7=42 6*8=48 6*9=54

7*7=49 7*8=56 7*9=63

8*8=64 8*9=72

9*9=81

#####哎?好像没有当初做的那种困难感了?0.0

#####是不是因为C好像会用嵌套然后我当初把python和C混起来了??

数学问题

主要是不太理解基本数学(σ^σ)

将涉及到:素数、完数、因数分解

素数

#找素数

for n in range(1,101):

for i in range(2,n): #素数的判别方法

if n%i==0:

break

else: #else要与内for对齐

print(n,end='\t') #否则输出的只不过是每次的检验数

#判断素数

n=int(input('输入整数:'))

for i in range(2,n):

if n%i==0:

print('%d不是素数'%n)

break

else:

print('%d是素数'%n)

完数

#完数:1+2+3=6,6为完数;1+2+4≠8,8不是完数

N=int(input ('请输入一个自然数:'))

S=0

for i in range(1,N): #收集因数

if N%i==0:

S+=i

if S==N:

print(N,'是完数')

else:

print(N,'不是完数')

运行结果:

请输入一个自然数:6

6 是完数

>>>

请输入一个自然数:7

7 不是完数

>>>

因数分解

n=int(input('输入一个正整数n:'))

s=str(n)+'='

i=2

while (n//i)!=0: #n不小于2才需要因数分解

if n%i==0: #判断i是否为因数

n//=i #因数定义

s+=str(i)+'*'

else:

i+=1

print(s)

差不多就这样了,还有些小细节看错题批注就可以了!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值