讀程序戈轿,總結(jié)程序的功能:
numbers=1
for i in range(0,20):
numbers*=2 print(numbers)
print(numbers)
功能:2**20
summation=0
num=1
while num<=100:
if (num%3==0 or num%7==0) and num%21!=0:
summation += 1
num+=1
print(summation)
功能:求在1~100中能被3或7整除,但不能被21整除(即不能同時被3和7整除)的數(shù)的個數(shù)
編程實現(xiàn)(for和while各寫?一遍):
- 求1到100之間所有數(shù)的和、平均值
#for
sum1=0
for num in range(1,101):
sum1+=num
avg=sum1/100
print("和為:%d 平均值為:%.2f"%(sum1,avg))
#while
sum1=0
num=1
while num<=100:
sum1+=num
num+=1
avg=sum1/100
print("和為:%d 平均值為:%.2f"%(sum1,avg)) #5050,50.50
- 計算1-100之間能3整除的數(shù)的和
sum1=0
for num in range(1,101):
if not num%3:
sum1+=num
print(sum1)
#while
sum1=0
num=1
while num<=100:
if not num%3:
sum1+=num
num+=1
print(sum1) #1683
- 計算1-100之間不能被7整除的數(shù)的和
#for
sum1=0
for num in range(1,101):
if num%7:
sum1+=num
print(sum1)
#while
sum1=0
num=1
while num<=100:
if num%7:
sum1+=num
num+=1
print(sum1) #4315
- 求斐波那契數(shù)列列中第n個數(shù)的值:1政基,1贞铣,2,3沮明,5辕坝,8,13荐健,21酱畅,34....
n=int(input("請輸入你想要第幾個斐波納數(shù)列的數(shù):"))
num=2 #num循環(huán)的次數(shù),前2次為1江场,不用循環(huán)
now_num=1 #當前數(shù)
before_num=1 #前一個數(shù)
number=0 #用于交換數(shù)
while num<n:
number=now_num
now_num+=before_num
before_num=number
num+=1
print(now_num)
- 判斷101-200之間有多少個素數(shù)纺酸,并輸出所有素數(shù)。判斷素數(shù)的?方法:?用?一個數(shù)分別除2到sqrt(這個 數(shù))址否,如果能被整除餐蔬,則表明此數(shù)不不是素數(shù),反之是素數(shù)
number=0
for num in range(101,201):
for num1 in range(2,num):
if not num%num1:
break
else:
print(num,end=" ")
number+=1
print()
print(number)
21個
- 打印出所有的?水仙花數(shù),所謂?水仙花數(shù)是指?一個三位數(shù)佑附,其各位數(shù)字?立?方和等于該數(shù)本身樊诺。例例如:153是 ?一個?水仙花數(shù),因為153 = 1^3 + 5^3 + 3^3
number=0
for num in range(100,1000):
if num==(num//100)**3+((num//10)%10)**3+(num%10)**3:
print(num,end=" ")
number+=1
print(number)
153 370 371 407 4
- 有一分數(shù)序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數(shù)列列的第20個分數(shù) 分子:上?一個分數(shù)的分子加分母 分母: 上一個分數(shù)的分子 fz = 2 fm = 1 fz+fm / fz
from fractions import Fraction
fz = 2 # 分子
fm = 1 # 分母
number=0
for num in range(1,20):
number=fz
fz+=fm
fm=number
print(Fraction(fz, fm))
17711/10946
- 給一個正整數(shù),要求:1音同、求它是?幾位數(shù) 2.逆序打印出各位數(shù)字
import random
num=random.randint(1,100000)
print(num,end=" ")
print(len(str(num)),end=" ")
print(str(num)[::-1])
50490 5 09405
1.控制臺輸入年齡啄骇,根據(jù)年齡輸出不同的提示(例如:老年人,青壯年瘟斜,成年人缸夹,未成年,兒童)
while 1:
age=int(input("請輸入年齡:"))
if age<10:
print("兒童")
elif age<18:
print("未成年")
elif age<30:
print("成年人")
elif age<60:
print("青壯年")
else:
print("老年人")
2.計算5的階乘 5!的結(jié)果是
factorial=1 #階乘的積
for num in range(1,6):
factorial*=num
print(factorial)
120
3.求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加變成了累乘螺句。
sum1=0
for num1 in range(1,21):
factorial=1 #階乘的積
for num in range(1,num1+1):
factorial*=num #求階乘
sum1+=factorial #求和
print(sum1)
算法改進:在計算超過1000后有明顯的優(yōu)化
sum1=0
number=1
for num in range(1,21):
number*=num #n!=(n-1)!*n,用number記錄當前階乘的值虽惭。
sum1+=number
print(sum1)
2561327494111820313
4.計算 1+1/2!+1/3!+1/4!+...1/20!=?
from fractions import Fraction
sum=0
for num in range(1,21):
factorial=1
for num1 in range(1,num+1):
factorial*=num1
sum+=1/factorial
print(Fraction(sum1))
算法改進:
from fractions import Fraction
factorial=1
sum1=0
for num in range(1,21):
factorial*=1/num
sum1+=factorial
print(Fraction(sum1))
1.7182818284590455
5.循環(huán)輸入大于0的數(shù)字進行累加,直到輸入的數(shù)字為0蛇尚,就結(jié)束循環(huán)芽唇,并最后輸出累加的結(jié)果。
num=int(input("請輸入一個數(shù)字:"))
sum1=0
while num!=0:
sum1+=num
num=int(input("請輸入一個數(shù)字:"))
print(sum1)
6.求s=a+aa+aaa+aaaa+aa...a的值取劫,其中a是一個數(shù)字匆笤。例如2+22+222+2222+22222(此時共有5個數(shù)相加),幾個數(shù)相加有鍵盤控制谱邪。 1.程序分析:關(guān)鍵是計算出每一項的值炮捧。
a=int(input("請輸入a:"))
count1=int(input("請輸入相加的個數(shù):"))
sum1=0
for num1 in range(1,count1+1):
for num2 in range(0,num1):
sum1+=a*10**num2
print(sum1)
或者
a=int(input("請輸入a:"))
count1=int(input("請輸入相加的個數(shù):"))
sum1=0
for num in range(1,count1+1):
sum1+=a*num*10**(count1-num) #222+22+2=246=2*1*10**2+2*2*10**1+2*3*10**0
print(sum1)
7.輸入三個整數(shù)x,y,z,請把這三個數(shù)由小到大輸出惦银。
x=int(input("請輸入三個數(shù)字:"))
y=int(input())
z=int(input())
a=[x,y,z]
a.sort() #從小到大排序
for num in a:
print(num)
或者
x=int(input("請輸入三個數(shù)字:"))
y=int(input())
z=int(input())
num=0
while not x<=y<=z:
if x>y:
num=x
x=y
y=num
if y>z:
num=y
y=z
z=num
print(x,y,z)
或者
x=int(input("請輸入三個數(shù)字:"))
y=int(input())
z=int(input())
a=[x,y,z]
max1=0
bool1=True
while bool1:
for num in range(0,len(a)-1):
if a[num]>a[num+1]:
max1=a[num]
a[num]=a[num+1]
a[num+1]=max1
break
else:
bool1=False
print(a)
8.控制臺輸出三角形
a.根據(jù)n的值的不同咆课,輸出相應(yīng)的形狀
n = 5時 n = 4
***** ****
**** ***
*** **
** *
*
b.根據(jù)n的值的不同末誓,輸出相應(yīng)的形狀(n為奇數(shù))
n = 5 n = 7
* *
*** ***
***** *****
*******
n=4
for num in range(n,0,-1):
for num1 in range(1,num+1):
print("*",end="")
print()
9.輸出9*9口訣。 1.程序分析:分行與列考慮书蚪,共9行9列喇澡,i控制行,j控制列殊校。
for num in range(1,10):
for num1 in range(1,num+1):
print("%d*%d=%d"%(num1,num,num*num1),end=" ")
print()
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
[Finished in 0.2s]
10.這是經(jīng)典的"百馬百擔(dān)"問題晴玖,有一百匹馬,馱一百擔(dān)貨为流,大馬馱3擔(dān)呕屎,中馬馱2擔(dān),兩只小馬馱1擔(dān)艺谆,問有大,中拜英,小馬各幾匹静汤?
for num in range(1,101):
for num1 in range(1,101-num):
if num*3+num1*2+(100-num-num1)*0.5==100:
print("有大馬%d匹, 中馬%d匹, 小馬%d匹"%(num,num1,100-num-num1))
有大馬2匹, 中馬30匹居凶, 小馬68匹
有大馬5匹, 中馬25匹虫给, 小馬70匹
有大馬8匹, 中馬20匹, 小馬72匹
有大馬11匹, 中馬15匹侠碧, 小馬74匹
有大馬14匹, 中馬10匹抹估, 小馬76匹
有大馬17匹, 中馬5匹, 小馬78匹
[Finished in 0.1s]
11.我國古代數(shù)學(xué)家張邱建在《算經(jīng)》中出了一道“百錢買百雞”的問題弄兜,題意是這樣的: 5文錢可以買一只公雞药蜻,3文錢可以買一只母雞,1文錢可以買3只雛雞√娑觯現(xiàn)在用100文錢買100只雞语泽,那么各有公雞、母雞视卢、雛雞多少只踱卵?請編寫程序?qū)崿F(xiàn)。
for num in range(1,101):
for num1 in range(1,101-num):
if num*5+num1*3+(100-num-num1)*(1/3)==100:
print("有公雞%d只, 母雞%d只据过, 雛雞%d只"%(num,num1,100-num-num1))
有公雞4只, 母雞18只惋砂, 雛雞78只
有公雞8只, 母雞11只, 雛雞81只
有公雞12只, 母雞4只绳锅, 雛雞84只
[Finished in 0.1s]
12.小明單位發(fā)了100元的購物卡西饵,小明到超市買三類洗化用品,洗發(fā)水(15元)鳞芙,香皂(2元)罗标,牙刷(5元)庸队。要把100元整好花掉,可如有哪些購買結(jié)合闯割?
count1=0
for xfs in range(0,100//15+1):
for xz in range(0,(100-xfs*15)//2+1):
for yg in range(0,(100-xfs*15-xz*2)//5+1):
if xfs*15+xz*2+yg*5==100:
print("洗發(fā)水有:%d, 香皂有:%d, 牙膏有:%d彻消。"%(xfs,xz,yg))
count1+=1
print(count1)
或者
for xfs in range(0,100):
if 15*xfs>100:
break
for xz in range(0,100):
money=15*xfs+xz*2
if money>100:
break
if (100-money)%5==0:
yg=(100-money)/5
print("洗發(fā)水有:%d, 香皂有:%d宙拉, 牙膏有:%d宾尚。"%(xfs,xz,yg))
或者(最優(yōu))
count1=0
xfs=0
while xfs*15<=100:
xz=0
while xfs*15+xz*2<=100:
money=100-xfs*15-xz*2
if money%5==0:
yg=money/5
count1+=1
print("洗發(fā)水有:%d, 香皂有:%d谢澈, 牙膏有:%d煌贴。"%(xfs,xz,yg))
xz+=1
xfs+=1
print(count1)
洗發(fā)水有:0, 香皂有:0, 牙膏有:20。
洗發(fā)水有:0, 香皂有:5, 牙膏有:18锥忿。
洗發(fā)水有:0, 香皂有:10, 牙膏有:16牛郑。
洗發(fā)水有:0, 香皂有:15, 牙膏有:14。
洗發(fā)水有:0, 香皂有:20, 牙膏有:12敬鬓。
洗發(fā)水有:0, 香皂有:25, 牙膏有:10淹朋。
洗發(fā)水有:0, 香皂有:30, 牙膏有:8。
洗發(fā)水有:0, 香皂有:35, 牙膏有:6钉答。
洗發(fā)水有:0, 香皂有:40, 牙膏有:4础芍。
洗發(fā)水有:0, 香皂有:45, 牙膏有:2。
洗發(fā)水有:0, 香皂有:50, 牙膏有:0数尿。
洗發(fā)水有:1, 香皂有:0, 牙膏有:17仑性。
洗發(fā)水有:1, 香皂有:5, 牙膏有:15。
洗發(fā)水有:1, 香皂有:10, 牙膏有:13右蹦。
洗發(fā)水有:1, 香皂有:15, 牙膏有:11诊杆。
洗發(fā)水有:1, 香皂有:20, 牙膏有:9。
洗發(fā)水有:1, 香皂有:25, 牙膏有:7何陆。
洗發(fā)水有:1, 香皂有:30, 牙膏有:5刽辙。
洗發(fā)水有:1, 香皂有:35, 牙膏有:3。
洗發(fā)水有:1, 香皂有:40, 牙膏有:1甲献。
洗發(fā)水有:2, 香皂有:0, 牙膏有:14宰缤。
洗發(fā)水有:2, 香皂有:5, 牙膏有:12。
洗發(fā)水有:2, 香皂有:10, 牙膏有:10晃洒。
洗發(fā)水有:2, 香皂有:15, 牙膏有:8慨灭。
洗發(fā)水有:2, 香皂有:20, 牙膏有:6。
洗發(fā)水有:2, 香皂有:25, 牙膏有:4球及。
洗發(fā)水有:2, 香皂有:30, 牙膏有:2氧骤。
洗發(fā)水有:2, 香皂有:35, 牙膏有:0。
洗發(fā)水有:3, 香皂有:0, 牙膏有:11吃引。
洗發(fā)水有:3, 香皂有:5, 牙膏有:9筹陵。
洗發(fā)水有:3, 香皂有:10, 牙膏有:7刽锤。
洗發(fā)水有:3, 香皂有:15, 牙膏有:5。
洗發(fā)水有:3, 香皂有:20, 牙膏有:3朦佩。
洗發(fā)水有:3, 香皂有:25, 牙膏有:1并思。
洗發(fā)水有:4, 香皂有:0, 牙膏有:8。
洗發(fā)水有:4, 香皂有:5, 牙膏有:6语稠。
洗發(fā)水有:4, 香皂有:10, 牙膏有:4宋彼。
洗發(fā)水有:4, 香皂有:15, 牙膏有:2。
洗發(fā)水有:4, 香皂有:20, 牙膏有:0仙畦。
洗發(fā)水有:5, 香皂有:0, 牙膏有:5输涕。
洗發(fā)水有:5, 香皂有:5, 牙膏有:3。
洗發(fā)水有:5, 香皂有:10, 牙膏有:1慨畸。
洗發(fā)水有:6, 香皂有:0, 牙膏有:2莱坎。
洗發(fā)水有:6, 香皂有:5, 牙膏有:0。
44
[Finished in 0.2s]