基礎(chǔ)
讀程序,總結(jié)程序的功能:
numbers = 1
for i in range(0,20):
numbers * = 2
print(numbers)
執(zhí)行數(shù)字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)
統(tǒng)計數(shù)字(1~100)中,能被3整除或者被7整除,但不能同時被3和7整除的數(shù)的個數(shù)。
編程實現(xiàn)(for和while各寫一遍):
- 求1到100之間所有數(shù)的和、平均值
for:
sum1 = 0
for num in range(1,101):
sum1 += num
print('1~100的和:%d' % sum1)
average = sum1 / 100
print('1~100的平均值:%d' % average)
1~100的和:5050
1~100的平均值:50
while:
num = 1
sum1 = 0
while num <= 100:
sum1 += num
num += 1
print('1~100的和:%d' % sum1)
average = sum1 / 100
print('1~100的平均值:%d' % average)
1~100的和:5050
1~100的平均值:50
- 計算1-100之間能3整除的數(shù)的和
for:
sum1 = 0
for num in range(1,101):
if num % 3 == 0:
sum1 += num
print('被3整除的數(shù)的和:%d' % sum1)
被3整除的數(shù)的和:1683
while:
sum2 = 0
num1 = 1
while num1 <= 100:
if num1 % 3 == 0:
sum2 += num1
num1 += 1
print('被3整除的數(shù)的和:%d' % sum2)
被3整除的數(shù)的和:1683
- 計算1-100之間不能被7整除的數(shù)的和
for:
sum1 = 0
for num in range(1,101):
if num % 7 == 0:
continue
sum1 += num
print('不能被7整除的數(shù)的和:%d' % sum1)
不能被7整除的數(shù)的和:4315
while:
sum2 = 0
num1 = 1
while num1 <= 100:
if num1 % 7 != 0:
sum2 += num1
num1 += 1
print('不能被7整除的數(shù)的和:%d' % sum2)
不能被7整除的數(shù)的和:4315
稍微困難
- 求斐波那契數(shù)列中第n個數(shù)的值:1,1,2,3,5,8,13,21,34....
f1 = 1
f2 = 1
fn = 0
n = int(input("請輸入斐波那契數(shù)列第n個數(shù):"))
for n in range(1, n + 1):
if n == 1:
f1 = 1
elif n == 2:
f2 = 1
else:
fn = f1 + f2
f1 = f2
f2 = fn
print("第%d個斐波那契數(shù)列的值:%d" % (n, fn))
例:請輸入斐波那契數(shù)列第n個數(shù):15
第15個斐波那契數(shù)列的值:610
- 判斷101-200之間有多少個素數(shù),并輸出所有素數(shù)。判斷素數(shù)的方法:用一個數(shù)分別除2到sqrt(這個
數(shù)),如果能被整除,則表明此數(shù)不是素數(shù),反之是素數(shù)
count = 0
for num1 in range(101,201,2):
for num2 in range(2,num1) :
if num1 % num2 == 0:
break
else:
count += 1
print(num1)
print("素數(shù)的個數(shù):%d" % count)
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199
素數(shù)的個數(shù):21
- 打印出所有的水仙花數(shù),所謂水仙花數(shù)是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是
一個水仙花數(shù),因為153 = 1^3 + 5^3 + 3^3
print("所有水仙花數(shù):" )
for num1 in range(100,1000):
bw = num1 // 100
sw = num1 // 10 % 10
gw = num1 % 10
if num1 == bw ** 3 + sw ** 3 + gw ** 3:
print(num1)
所有水仙花數(shù):
153
370
371
407
- 有一分數(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
import fractions
fz = 2
fm = 1
n = int(input("請輸入第n個分數(shù)序列:"))
for n in range(1,n+1):
if n == 1:
num1 = fractions.Fraction(fz, fm)
else:
fz = fz + fm
fm = fz - fm
num1 = fractions.Fraction(fz, fm)
print(num1)
請輸入第n個分數(shù)序列:20
第20個分數(shù)值: 17711/10946
- 給一個正整數(shù),要求:1、求它是幾位數(shù) 2.逆序打印出各位數(shù)字
num1 = input("請輸入一個正整數(shù):")
str1 = str(num1)
print("這個整數(shù)是%d位數(shù)" % len(str1))
print("逆序打?。?)
for index in range(0,len(str1)):
print(str1[len(str1)-1-index])
例:請輸入一個正整數(shù):256578745
這個整數(shù)是9位數(shù)
逆序打?。?br> 5
4
7
8
7
5
6
5
2
提高
1.控制臺輸入年齡,根據(jù)年齡輸出不同的提示(例如:老年人,青壯年,成年人,未成年,兒童)
age = int(input("請輸入年齡:"))
if age < 12:
print("兒童")
elif age < 18:
print("未成年")
elif age < 30:
print("成年人")
elif age < 50:
print("青壯年")
elif age > 50:
print("老年人")
例:
請輸入年齡:23
成年人
2.計算5的階乘 5!的結(jié)果是
sum1 = 1
for num1 in range(1,6):
sum1 *= num1
print("5的階乘5!的結(jié)果是:%d" % sum1)
5的階乘5!的結(jié)果是:120
3.求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加變成了累乘。
sum1 = 1
sum2 = 0
for num1 in range(1,21):
for num2 in range(1,num1+1):
sum1 *= num2
sum2 += sum1
sum1 = 1
print("1+2!+3!+...+20!的結(jié)果是:%d" % sum2)
1+2!+3!+...+20!的結(jié)果是:2561327494111820313
4.計算 1+1/2!+1/3!+1/4!+...1/20!=?
import fractions
sum1 = 1
sum2 = 0
num3 = 0
for num1 in range(1, 21):
for num2 in range(1,num1+1):
sum1 *= num2
num3 = fractions.Fraction(1, sum1)
sum2 += num3
sum1 = 1
print("1+1/2!+1/3!+1/4!...+1/20!的結(jié)果是:%.2f" % sum2)
1+1/2!+1/3!+1/4!...+1/20!的結(jié)果是:1.72
5.循環(huán)輸入大于0的數(shù)字進行累加,直到輸入的數(shù)字為0,就結(jié)束循環(huán),并最后輸出累加的結(jié)果。
value = int(input("請輸入:"))
sum1 = value
while value != 0:
value = int(input("請輸入:"))
sum1 += value
print("輸入數(shù)字的和:%d" % sum1)
例:請輸入:3
請輸入:6
請輸入:7
請輸入:4
請輸入:2
請輸入:5
請輸入:9
請輸入:1
請輸入:0
輸入數(shù)字的和:37
6.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數(shù)字。例如2+22+222+2222+22222(此時共有5個數(shù)相加),幾個數(shù)相加有鍵盤控制。 1.程序分析:關(guān)鍵是計算出每一項的值。
a = int(input("請輸入一個數(shù)字:"))
b = int(input("請輸入相加個數(shù):"))
sum1 = 1
s = 0
for num1 in range(1, b+1):
for num in range(1, num1+1):
sum1 = a * 10 ** (num-1)
s += sum1
print("所有數(shù)值之和:%d" % s)
例:請輸入一個數(shù)字:2
請輸入相加個數(shù):5
所有數(shù)值之和:24690
7.輸入三個整數(shù)x,y,z,請把這三個數(shù)由小到大輸出。
x = int(input("請輸入:x="))
y = int(input("請輸入:y="))
z = int(input("請輸入:z="))
num1 = max(x, y, z)
num2 = min(x, y, z)
num3 = x + y + z - num1 - num2
print(num2, num3, num1)
請輸入:x=2
請輸入:y=4
請輸入:z=3
2 3 4
8.控制臺輸出三角形
a.根據(jù)n的值的不同,輸出相應(yīng)的形狀
n = 5時 n = 4
***** ****
**** ***
*** **
** *
*
str1 = '*'
n = int(input("n="))
str2 = str1 * n
for i in range(n):
print(str2[:n])
n -= 1
例:
n=5
*****
****
***
**
*
b.根據(jù)n的值的不同,輸出相應(yīng)的形狀(n為奇數(shù))
n = 5 n = 7
* *
*** ***
***** *****
*******
str1 = '*'
n = int(input("請輸入一個奇數(shù):n="))
for i in range((n+1) // 2):
str2 = str1.center(n, ' ')
print(str2)
str1 += '*'
str1 += '*'
例:
n=7
*
***
*****
*******
9.輸出9*9口訣。 1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
for i in range(1, 10):
for j in range(1, i+1):
num1 = i * j
print("%d * %d = %d" % (j, i, num1), '\t', end='')
if i == j:
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
10.這是經(jīng)典的"百馬百擔"問題,有一百匹馬,馱一百擔貨,大馬馱3擔,中馬馱2擔,兩只小馬馱1擔,問有大,中,小馬各幾匹?
print("大馬、中馬、小馬匹數(shù)有如下情況:")
for dm in range(1, 99):
for zm in range(1, 99):
for xm in range(1, 99):
if dm + zm + xm == 100 and 3 * dm + 2 * zm + 0.5 * xm == 100:
print(dm, zm, xm)
大馬、中馬、小馬匹數(shù)有如下情況:
2 30 68
5 25 70
8 20 72
11 15 74
14 10 76
17 5 78
11.我國古代數(shù)學(xué)家張邱建在《算經(jīng)》中出了一道“百錢買百雞”的問題,題意是這樣的: 5文錢可以買一只公雞,3文錢可以買一只母雞,1文錢可以買3只雛雞?,F(xiàn)在用100文錢買100只雞,那么各有公雞、母雞、雛雞多少只?請編寫程序?qū)崿F(xiàn)。
print("公雞、母雞、雛雞個數(shù)有如下情況:")
for gj in range(1, 99):
for mj in range(1, 99):
for cj in range(1, 99):
if gj + mj + cj == 100 and 5 * gj + 3 * mj + 1/3 * cj == 100:
print(gj, mj, cj)
公雞、母雞、雛雞個數(shù)有如下情況:
4 18 78
8 11 81
12 4 84
12.小明單位發(fā)了100元的購物卡,小明到超市買三類洗化用品,洗發(fā)水(15元),香皂(2元),牙刷(5元)。要把100元整好花掉,可如有哪些購買結(jié)合?
print("購買方式有如下情況:")
for xfs in range(0, 7):
for xz in range(0, 51):
for ys in range(0, 21):
if 15 * xfs + 2 * xz + 5 * ys == 100:
print("洗發(fā)水%d瓶,香皂%d塊,牙刷%d支" % (xfs, xz, ys))
購買方式有如下情況:
洗發(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支