99道python测试题
生活随笔
收集整理的這篇文章主要介紹了
99道python测试题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
''
【程序1】
題目:有1、2、3、4
個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?
1.
程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去掉不滿足條件的排列。
2.
程序源代碼:
'''
for i in range(1,5):for j in range(1,5):for k in range(1,5):if( i != k ) and (i != j) and (j != k):print i,j,k'''
【程序2】
題目:企業發放的獎金根據利潤提成。利潤(I)
低于或等于10萬元時,獎金可提10 %;利潤高于10萬元,低于20萬元時,低于10萬元的部分按10 % 提成,高于10萬元的部分,可可提成7
.5 %;20
萬到40萬之間時,高于20萬元的部分,可提成5 %;40
萬到60萬之間時高于40
萬元的部分,可提成3 %;60
萬到100萬之間時,高于60萬元的部分,可提成1
.5 %,高于100
萬元時,超過100萬元的部分按1 % 提成,從鍵盤輸入當月利潤I,求應發放獎金總數?
1.
程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。
2.
程序源代碼:
'''
bonus1 = 100000 * 0.1
bonus2 = bonus1 + 100000 * 0.500075
bonus4 = bonus2 + 200000 * 0.5
bonus6 = bonus4 + 200000 * 0.3
bonus10 = bonus6 + 400000 * 0.15i = int(raw_input('input gain:\n'))
if i <= 100000:bonus = i * 0.1
elif i <= 200000:bonus = bonus1 + (i - 100000) * 0.075
elif i <= 400000:bonus = bonus2 + (i - 200000) * 0.05
elif i <= 600000:bonus = bonus4 + (i - 400000) * 0.03
elif i <= 1000000:bonus = bonus6 + (i - 600000) * 0.015
else:bonus = bonus10 + (i - 1000000) * 0.01
print 'bonus = ',bonus
'''
【程序3】
題目:一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
1.
程序分析:在10萬以內判斷,先將該數加上100后再開方,再將該數加上268后再開方,如果開方后的結果滿足如下條件,即是結果。請看具體分析:
2.
程序源代碼:# include "math.h"
main()
{long
int
i, x, y, z;
for (i=1;i < 100000;i++){x = sqrt(i + 100); / *x為加上100后開方后的結果 * /y = sqrt(i + 268); / *y為再加上168后開方后的結果 * /if (x * x == i + 100 & & y * y == i + 268) / * 如果一個數的平方根的平方等于該數,這說明此數是完全平方數 * /printf("\n%ld\n", i);}
}
'''
import math
for i in range(10000):#轉化為整型值x = int(math.sqrt(i + 100))y = int(math.sqrt(i + 268))if(x * x == i + 100) and (y * y == i + 268):print i
'''
題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
1.
程序分析:以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時需考慮多加一天。
2.
程序源代碼:
'''
year = int(raw_input('year:\n'))
month = int(raw_input('month:\n'))
day = int(raw_input('day:\n'))months = (0,31,59,90,120,151,181,212,243,273,304,334)
if 0 <= month <= 12:sum = months[month - 1]
else:print 'data error'
sum += day
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):leap = 1
if (leap == 1) and (month > 2):sum += 1
print 'it is the %dth day.' % sum'''
【程序5】
題目:輸入三個整數x, y, z,請把這三個數由小到大輸出。
1.
程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x > y則將x與y的值進行交換,然后再用x與z進行比較,如果x > z則將x與z的值進行交換,這樣能使x最小。
2.
程序源代碼:
'''
l = []
for i in range(3):x = int(raw_input('integer:\n'))l.append(x)
l.sort()
print l
'''
【程序6】
題目:用 * 號輸出字母C的圖案。
1.
程序分析:可先用
'*'
號在紙上寫出字母C,再分行輸出。
2.
程序源代碼:
'''
print 'Hello Python world!\n'
print '*' * 10
for i in range(5):print '* *'
print '*' * 10
print '*\n' * 6
'''
【程序7】
題目:輸出特殊圖案,請在c環境中運行,看一看,Very
Beautiful!
1.
程序分析:字符共有256個。不同字符,圖形不一樣。
2.
程序源代碼:
'''
a = 176
b = 219
print chr(b),chr(a),chr(a),chr(a),chr(b)
print chr(a),chr(b),chr(a),chr(b),chr(a)
print chr(a),chr(a),chr(b),chr(a),chr(a)
print chr(a),chr(b),chr(a),chr(b),chr(a)
print chr(b),chr(a),chr(a),chr(a),chr(b)'''
【程序8】
題目:輸出9 * 9
口訣。
1.
程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
2.
程序源代碼:
# include "stdio.h"
main()
{int
i, j, result;printf("\n");for (i=1;i < 10;i++){for (j=1;j < 10;j++){result=i * j;printf("%d*%d=%-3d", i, j, result); / * -3d表示左對齊,占3位 * /}printf("\n"); / * 每一行后換行 * /}
}
'''
for i in range(1,10):for j in range(1,10):result = i * jprint '%d * %d = % -3d' % (i,j,result)print '''''
【程序9】
題目:要求輸出國際象棋棋盤。
1.
程序分析:用i控制行,j來控制列,根據i + j的和的變化來控制輸出黑方格,還是白方格。
2.
程序源代碼:
# include "stdio.h"
main()
{int
i, j;
for (i=0;i < 8;i++){for (j=0;j < 8;j++)if ((i+j) % 2 == 0)printf("%c%c", 219, 219);elseprintf(" ");printf("\n");}
}
'''
import sys
for i in range(8):for j in range(8):if(i + j) % 2 == 0:sys.stdout.write(chr(219))sys.stdout.write(chr(219))else:sys.stdout.write(' ')print ''
'''
【程序10】
題目:打印樓梯,同時在樓梯上方打印兩個笑臉。
1.
程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。
2.
程序源代碼:
'''
import sys
sys.stdout.write(chr(1))
sys.stdout.write(chr(1))
print ''for i in range(1,11):for j in range(1,i):sys.stdout.write(chr(219))sys.stdout.write(chr(219))print '''''
【程序11】
題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
1.
程序分析: 兔子的規律為數列1, 1, 2, 3, 5, 8, 13, 21....
2.
程序源代碼:
main()
{long
f1, f2;
int
i;
f1 = f2 = 1;
for (i=1;i <= 20;i++){printf("%12ld %12ld", f1, f2);if (i % 2 == 0) printf("\n"); / * 控制輸出,每行四個 * /f1=f1+f2; / * 前兩個月加起來賦值給第三個月 * /f2=f1+f2; / * 前兩個月加起來賦值給第三個月 * /}
}
'''
f1 = 1
f2 = 1
for i in range(1,21):print '%12d %12d' % (f1,f2)if (i % 2) == 0:print ''f1 = f1 + f2f2 = f1 + f2'''
【程序12】
題目:判斷101 - 200
之間有多少個素數,并輸出所有素數。
1.
程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。
2.
程序源代碼:
'''
h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,201):k = int(sqrt(m + 1))for i in range(2,k + 1):if m % i == 0:leap = 0breakif leap == 1:print '%-4d' % mh += 1if h % 10 == 0:print ''leap = 1
print 'The total is %d' % h
'''
【程序13】
題目:打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該數本身。例如:153
是一個“水仙花數”,因為153 = 1
的三次方+5
的三次方+3
的三次方。
1.
程序分析:利用for循環控制100 - 999
個數,每個數分解出個位,十位,百位。
2.
程序源代碼:
'''
for n in range(100,1001):i = n / 100j = n / 10 % 10k = n % 10if i * 100 + j * 10 + k == i + j ** 2 + k ** 3:print "%-5d" % n
'''
【程序14】
題目:將一個正整數分解質因數。例如:輸入90, 打印出90 = 2 * 3 * 3 * 5。程序分析:對n進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成:
(1)
如果這個質數恰等于n,則說明分解質因數的過程已經結束,打印出即可。
(2)
如果n <> k,但n能被k整除,則應打印出k的值,并用n除以k的商, 作為新的正整數你n,重復執行第一步。
(3)
如果n不能被k整除,則用k + 1
作為k的值, 重復執行第一步。2.
程序源代碼:
'''
from sys import stdout
n = int(raw_input("input number:\n"))
print "n = %d" % nfor i in range(2,n + 1):while n != i:if n % i == 0:stdout.write(str(i))stdout.write("*")n = n / ielse:break
print "%d" % n
'''
【程序15】
題目:利用條件運算符的嵌套來完成此題:學習成績 >= 90
分的同學用A表示,60 - 89
分之間的用B表示,60
分以下的用C表示。
1.
程序分析:(a > b)?a: b這是條件運算符的基本例子。
2.
程序源代碼:
不支持這個運算符
'''
score = int(raw_input('input score:\n'))
if score >= 90:grade = 'A'
elif score >= 60:grade = 'B'
else:grade = 'C'print '%d belongs to %s' % (score,grade)
'''
【程序17】
題目:輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
1.
程序分析:利用while語句, 條件為輸入的字符不為
'\n'.2.
程序源代碼:
'''
import string
s = raw_input('input a string:\n')
letters = 0
space = 0
digit = 0
others = 0
for c in s:if c.isalpha():letters += 1elif c.isspace():space += 1elif c.isdigit():digit += 1else:others += 1
print 'char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others)
'''
題目:求s = a + aa + aaa + aaaa + aa...a的值,其中a是一個數字。例如2 + 22 + 222 + 2222 + 22222(此時共有5個數相加),幾個數相加有鍵盤控制。
1.
程序分析:關鍵是計算出每一項的值。
2.
程序源代碼:
'''
Tn = 0
Sn = []
n = int(raw_input('n = :\n'))
a = int(raw_input('a = :\n'))
for count in range(n):Tn = Tn + aa = a * 10Sn.append(Tn)print TnSn = reduce(lambda x,y : x + y,Sn)
print Sn
'''
【程序19】
題目:一個數如果恰好等于它的因子之和,這個數就稱為“完數”。例如6 = 1+2+3.
編程找出1000以內的所有完數。
1.
程序分析:請參照程序 < --上頁程序14.
2.
程序源代碼:
'''
from sys import stdout
for j in range(2,1001):k = []n = -1s = jfor i in range(1,j):if j % i == 0:n += 1s -= ik.append(i)if s == 0:print jfor i in range(n):stdout.write(k[i])stdout.write(' ')print k[n]'''
【程序20】
題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?
1.
程序分析:見下面注釋
2.
程序源代碼:
'''
Sn = 100.0
Hn = Sn / 2for n in range(2,11):Sn += 2 * HnHn /= 2print 'Total of road is %f' % Sn
print 'The tenth is %f meter' % Hn
'''
【程序21】
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
1.
程序分析:采取逆向思維的方法,從后往前推斷。
2.
程序源代碼:
'''
x2 = 1
for day in range(9,0,-1):x1 = (x2 + 1) * 2x2 = x1
print x1
'''
【程序22】
題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a, b, c三人,乙隊為x, y, z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x, z比,請編程序找出三隊賽手的名單。
1.
程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。
2.
程序源代碼:
'''
for i in range(ord('x'),ord('z') + 1):for j in range(ord('x'),ord('z') + 1):if i != j:for k in range(ord('x'),ord('z') + 1):if (i != k) and (j != k):if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):print 'order is a -- %s\t b -- %s\tc--%s' % (chr(i),chr(j),chr(k))
'''
【程序23】
題目:打印出如下圖案(菱形)*
** *
** ** *
** ** ** *
** ** *
** *
*
1.
程序分析:先把圖形分成兩部分來看待,前四行一個規律,后三行一個規律,利用雙重for循環,第一層控制行,第二層控制列。
2.
程序源代碼:
'''
from sys import stdout
for i in range(4):for j in range(2 - i + 1):stdout.write(' ')for k in range(2 * i + 1):stdout.write('*')printfor i in range(3):for j in range(i + 1):stdout.write(' ')for k in range(4 - 2 * i + 1):stdout.write('*')print
'''
【程序24】
題目:有一分數序列:2 / 1,3 / 2,5 / 3,8 / 5,13 / 8,21 / 13...求出這個數列的前20項之和。
1.
程序分析:請抓住分子與分母的變化規律。
2.
程序源代碼:
'''
#方法一
a = 2.0
b = 1.0
s = 0
for n in range(1,21):s += a / bt = aa = a + bb = t
print s
#方法二
s = 0.0
for n in range(1,21):s += a / bb,a = a , a + b
print ss = 0.0
for n in range(1,21):s += a / bb,a = a , a + b
print s
#方法三
l = []
for n in range(1,21):b,a = a,a + bl.append(a / b)
print reduce(lambda x,y: x + y,l)
'''
【程序25】
題目:求1 + 2!+3!+... + 20!的和
1.
程序分析:此程序只是把累加變成了累乘。
2.
程序源代碼:
'''
#方法一
n = 0
s = 0
t = 1
for n in range(1,21):t *= ns += t
print '1! + 2! + 3! + ... + 20! = %d' % s#方法二
s = 0
l = range(1,21)
def op(x):r = 1for i in range(1,x + 1):r *= ireturn r
s = sum(map(op,l))
print '1! + 2! + 3! + ... + 20! = %d' % s
'''
【程序26】
題目:利用遞歸方法求5!。
1.
程序分析:遞歸公式:fn = fn_1 * 4!
2.
程序源代碼:
'''
def fact(j):sum = 0if j == 0:sum = 1else:sum = j * fact(j - 1)return sumfor i in range(5):print '%d! = %d' % (i,fact(i))
'''
【程序27】
題目:利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。
1.
程序分析:
2.
程序源代碼:
'''
def palin(n):next = 0if n <= 1:next = input()printprint nextelse:next = input()palin(n - 1)print nexti = 5
palin(i)
print
'''
【程序28】
題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3
個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大?
1.
程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數,需知道第四人的歲數,依次類推,推到第一人(10
歲),再往回推。
'''
def age(n):if n == 1: c = 10else: c = age(n - 1) + 2return c
print age(5)
'''
【程序29】
題目:給一個不多于5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。
1.
程序分析:學會分解出每一位數,如下解釋:(這里是一種簡單的算法,師專數002班趙鑫提供)
2.
程序源代碼:
'''
x = int(raw_input("input a number:\n"))
a = x / 10000
b = x % 10000 / 1000
c = x % 1000 / 100
d = x % 100 / 10
e = x % 10if a != 0:print "there are 5 ",e,d,c,b,a
elif b != 0:print "there are 4 ",d,c,b,a
elif c != 0:print "there are 3 ",e,d,c
elif d != 0:print "there are 2 ",e,d
else:print "there are 1",e
'''
題目:一個5位數,判斷它是不是回文數。即12321是回文數,個位與萬位相同,十位與千位相同。
1.
程序分析:同29例
2.
程序源代碼:
'''
x = int(raw_input("input a number:\n"))
x = str(x)
for i in range(len(x)/2):if x[i] != x[-i - 1]:print 'this number is not a huiwen'break
print 'this number is a huiwen'
'''
程序31】
題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。
1.
程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。
2.
程序源代碼:
'''
from sys import stdin
letter = stdin.read(1)
stdin.flush()
while letter != 'Y':if letter == 'S':print 'please input second letter'letter = stdin.read(1)stdin.flush()if letter == 'a':print 'Saturday'elif letter == 'u':print 'Sunday'else:print 'data error'breakelif letter == 'F':print 'Friday'breakelif letter == 'M':print 'Monday'#breakelif letter == 'T':print 'please input second letter'letter = stdin.read(1)stdin.flush()if letter == 'u':print 'Tuesday'elif letter == 'h':print 'Thursday'else:print 'data error'breakelif letter == 'W':print 'Wednesday'else:print 'data error'letter = stdin.read(1)stdin.flush()'''
【程序32】
題目:Press
any
key
to
change
color, do
you
want
to
try it.Please hurry up!
1.
程序分析:
2.
程序源代碼:
不知道寫呢: (, 先空著吧''''''【程序33】題目:學習gotoxy()
與clrscr()
函數
1.
程序分析:
2.
程序源代碼:
不知道如何寫: (先空著吧''''''【程序34】題目:練習函數調用1. 程序分析:2.程序源代碼:'''def hello_world():print 'hello world'def three_hellos():for i in range(3):hello_world()if __name__ == '__main__':three_hellos()'''【程序35】題目:文本顏色設置1.程序分析:2.程序源代碼:# include <conio.h>void main(void)
{int
color;
for (color = 1; color < 16; color++){textcolor(color); / *設置文本顏色 * /cprintf("This is color %d\r\n", color);}
textcolor(128 + 15);
cprintf("This is blinking\r\n");
}
'''
'''
【程序36】
題目:求100之內的素數
1.
程序分析:
2.
程序源代碼:
'''
from math import sqrt
if __name__ == '__main__':N = 100a = range(0,N)for i in range(2,int(sqrt(N))):for j in range(i + 1,N):if (a[i] != 0) and (a[j] != 0):if a[j] % a[i] == 0:a[j] = 0printfor i in range(2,N):if a[i] != 0:print "%5d" % a[i]if (i - 2) % 10 == 0:print
'''
【程序37】
題目:對10個數進行排序
1.
程序分析:可以利用選擇法,即從后9個比較過程中,選擇一個最小的與第一個元素交換,下次類推,即用第二個元素與后8個進行比較,并進行交換。
2.
程序源代碼:
'''
if __name__ == "__main__":N = 10# input dataprint 'please input ten num:\n'l = []for i in range(N):l.append(int(raw_input('input a number:\n')))printfor i in range(N):print l[i]print# sort ten numfor i in range(N - 1):min = ifor j in range(i + 1,N):if l[min] > l[j]:min = jl[i],l[min] = l[min],l[i]print 'after sorted'for i in range(N):print l[i]'''
【程序38】
題目:求一個3 * 3
矩陣對角線元素之和
1.
程序分析:利用雙重for循環控制輸入二維數組,再將a[i][i]
累加后輸出。
2.
程序源代碼:
'''
if __name__ == '__main__':a = []sum = 0.0for i in range(3):a.append([])for j in range(3):a[i].append(float(raw_input("input num:\n")))for i in range(3):sum += a[i][i]print sum'''
【程序39】
題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。
1.
程序分析:首先判斷此數是否大于最后一個數,然后再考慮插入中間的數的情況,插入后此元素之后的數,依次后移一個位置。
2.
程序源代碼:
'''
if __name__ == '__main__':# 方法一a = [1,4,6,9,13,16,19,28,40,100,0]print 'original list is:'for i in range(len(a)):print a[i]number = int(raw_input("insert a new number:\n"))end = a[9]if number > end:a[10] = numberelse:for i in range(10):if a[i] > number:temp1 = a[i]a[i] = numberfor j in range(i + 1,11):temp2 = a[j]a[j] = temp1temp1 = temp2breakfor i in range(11):print a[i]# 方法二# insrt another numbernumber = int(raw_input('input a number:\n'))if number > a[len(a) - 1]:a.append(number)else:for i in range(len(a)):if a[i] > number:a.insert(i,number)print a'''
【程序40】
題目:將一個數組逆序輸出。
1.
程序分析:用第一個與最后一個交換。
2.
程序源代碼:
'''
if __name__ == '__main__':a = [9,6,5,4,1]N = len(a) print afor i in range(len(a) / 2):a[i],a[N - i - 1] = a[N - i - 1],a[i]print a
'''
【程序41】
題目:學習static定義靜態變量的用法
1.
程序分析:
2.
程序源代碼:
'''
# python沒有這個功能了,只能這樣了:)
def varfunc():var = 0print 'var = %d' % varvar += 1
if __name__ == '__main__':for i in range(3):varfunc()# attribut of class
# 作為類的一個屬性吧
class Static:StaticVar = 5def varfunc(self):self.StaticVar += 1print self.StaticVarprint Static.StaticVar
a = Static()
for i in range(3):a.varfunc()
'''
題目:學習使用auto定義變量的用法
1.
程序分析:
2.
程序源代碼:
沒有auto關鍵字,使用變量作用域來舉例吧
'''
num = 2
def autofunc():num = 1print 'internal block num = %d' % numnum += 1
for i in range(3):print 'The num = %d' % numnum += 1autofunc()'''
【程序43】
題目:學習使用static的另一用法。
1.
程序分析:
2.
程序源代碼:
有一個static變量的用法,python是沒有,演示一個python作用域使用方法
'''
class Num:nNum = 1def inc(self):self.nNum += 1print 'nNum = %d' % self.nNumif __name__ == '__main__':nNum = 2inst = Num()for i in range(3):nNum += 1print 'The num = %d' % nNuminst.inc()
'''
【程序44】
題目:學習使用external的用法。
1.
程序分析:
2.
程序源代碼:
external.py代碼:'''
import external
if __name__ == '__main__':print external.add(10,20)
'''
【程序45】
題目:學習使用register定義變量的方法。
1.
程序分析:
2.
程序源代碼:
沒有register關鍵字,用整型變量代替
'''
tmp = 0
for i in range(1,101):tmp += i
print 'The sum is %d' % tmp
'''
【程序46】
題目:宏
# define命令練習(1)
1.
程序分析:
2.
程序源代碼:
沒有C語言的宏,就這么寫了
'''
TRUE = 1
FALSE = 0
def SQ(x):return x * x
print 'Program will stop if input value less than 50.'
again = 1
while again:num = int(raw_input('Please input number'))print 'The square for this number is %d' % (SQ(num))if num >= 50:again = TRUEelse:again = FALSE
'''
題目:宏
# define命令練習(2)
1.
程序分析:
2.
程序源代碼:
# include "stdio.h"
# define exchange(a,b) { \ /*宏定義中允許包含兩道衣裳命令的情形,此時必須在最右邊加上"\"*/int
t; \t = a; \a = b; \b = t; \}'
這個宏定義python不支持
'''
def exchange(a,b):a,b = b,areturn (a,b)if __name__ == '__main__':x = 10y = 20print 'x = %d,y = %d' % (x,y)x,y = exchange(x,y)print 'x = %d,y = %d' % (x,y)
'''
【程序48】
題目:宏
# define命令練習(3)
1.
程序分析:
2.
程序源代碼:
# define LAG >
# define SMA <
# define EQ ==
# include "stdio.h"
void
main()
{int
i = 10;
int
j = 20;
if (i LAG j)
printf("\40: %d larger than %d \n", i, j);
else if (i EQ j)
printf("\40: %d equal to %d \n", i, j);
else if (i SMA j)
printf("\40:%d smaller than %d \n", i, j);
else
printf("\40: No such value.\n");
}
不知道如何用python實現類似的功能
'''
if __name__ == '__main__':i = 10j = 20if i > j:print '%d larger than %d' % (i,j)elif i == j:print '%d equal to %d' % (i,j)elif i < j:print '%d smaller than %d' % (i,j)else:print 'No such value''''
【程序49】
題目: # if #ifdef和#ifndef的綜合應用。
1. 程序分析:
2.程序源代碼:
# include "stdio.h"
# define MAX
# define MAXIMUM(x,y) (x>y)?x:y
# define MINIMUM(x,y) (x>y)?y:x
void main()
{
int a=10, b=20;
# ifdef MAX
printf("\40: The larger one is %d\n", MAXIMUM(a, b));
# else
printf("\40: The lower one is %d\n", MINIMUM(a, b));
# endif
# ifndef MIN
printf("\40: The lower one is %d\n", MINIMUM(a, b));
# else
printf("\40: The larger one is %d\n", MAXIMUM(a, b));
# endif
# undef MAX
# ifdef MAX
printf("\40: The larger one is %d\n", MAXIMUM(a, b));
# else
printf("\40: The lower one is %d\n", MINIMUM(a, b));
# endif
# define MIN
# ifndef MIN
printf("\40: The lower one is %d\n", MINIMUM(a, b));
# else
printf("\40: The larger one is %d\n", MAXIMUM(a, b));
# endif
}
這個還是預處理的用法,python不支持這樣的機制,演示lambda的使用。
'''
MAXIMUM = lambda x,y : (x > y) * x + (x < y) * y
MINIMUM = lambda x,y : (x > y) * y + (x < y) * xif __name__ == '__main__':a = 10b = 20print 'The largar one is %d' % MAXIMUM(a,b)print 'The lower one is %d' % MINIMUM(a,b)
'''
【程序51】
題目:學習使用按位與 & 。
1.程序分析:0 & 0=0; 0 & 1=0; 1 & 0=0; 1 & 1=1
2.程序源代碼:
'''
if __name__ == '__main__':a = 077b = a & 3print 'a & b = %d' % bb &= 7print 'a & b = %d' % b
'''
題目:學習使用按位或 | 。
1.程序分析:0 | 0=0; 0 | 1=1; 1 | 0=1; 1 | 1=1
2.程序源代碼:
'''if __name__ == '__main__':a = 077b = a | 3print 'a | b is %d' % bb |= 7print 'a | b is %d' % b
'''
【程序53】
題目:學習使用按位異或 ^ 。
1.程序分析:0 ^ 0=0; 0 ^ 1=1; 1 ^ 0=1; 1 ^ 1=0
2.程序源代碼:
'''
if __name__ == '__main__':a = 077b = a ^ 3print 'The a ^ 3 = %d' % bb ^= 7print 'The a ^ b = %d' % b
'''
【程序54】
題目:取一個整數a從右端開始的4~7位。
程序分析:可以這樣考慮:
(1)先使a右移4位。
(2)設置一個低4位全為1, 其余全為0的數。可用~(~0 << 4)
(3)將上面二者進行 & 運算。
'''
if __name__ == '__main__':a = int(raw_input('input a number:\n'))b = a >> 4c = ~(~0 << 4)d = b & cprint '%o\t%o' %(a,d)
'''
【程序55】
題目:學習使用按位取反~。
1.程序分析:~0=1; ~1=0;
2.程序源代碼:
如何查看復數的16進制數
'''
if __name__ == '__main__':a = 234b = ~aprint 'The a\'s 1 complement is %d' % ba = ~aprint 'The a\'s 2 complement is %d' % a
'''
【程序56】
題目:畫圖,學用circle畫圓形。
1.程序分析:
2.程序源代碼:
# include "graphics.h"
main()
{
int driver, mode, i;
float j=1, k=1;
driver=VGA;mode=VGAHI;
initgraph( & driver, & mode, "");
setbkcolor(YELLOW);
for (i=0;i <= 25;i++)
{
setcolor(8);
circle(310, 250, k);
k=k+j;
j=j+0.3;
}
}'''
if __name__ == '__main__':from Tkinter import *canvas = Canvas(width=800, height=600, bg='yellow') canvas.pack(expand=YES, fill=BOTH) k = 1j = 1for i in range(0,26):canvas.create_oval(310 - k,250 - k,310 + k,250 + k, width=1)k += jj += 0.3mainloop()
'''
【程序57】
題目:畫圖,學用line畫直線。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':from Tkinter import *canvas = Canvas(width=300, height=300, bg='green') canvas.pack(expand=YES, fill=BOTH) x0 = 263y0 = 263y1 = 275x1 = 275for i in range(19):canvas.create_line(x0,y0,x0,y1, width=1, fill='red')x0 = x0 - 5y0 = y0 - 5x1 = x1 + 5y1 = y1 + 5x0 = 263y1 = 275y0 = 263for i in range(21):canvas.create_line(x0,y0,x0,y1,fill = 'red')x0 += 5y0 += 5y1 += 5mainloop()
'''
【程序58】
題目:畫圖,學用rectangle畫方形。
1.程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
2.程序源代碼:
'''
if __name__ == '__main__':from Tkinter import *root = Tk()root.title('Canvas')canvas = Canvas(root,width = 400,height = 400,bg = 'yellow')x0 = 263y0 = 263y1 = 275x1 = 275for i in range(19):canvas.create_rectangle(x0,y0,x1,y1)x0 -= 5y0 -= 5x1 += 5y1 += 5canvas.pack()root.mainloop()
'''
題目:畫圖,綜合例子。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':from Tkinter import *canvas = Canvas(width = 300,height = 300,bg = 'green')canvas.pack(expand = YES,fill = BOTH)x0 = 150y0 = 100canvas.create_oval(x0 - 10,y0 - 10,x0 + 10,y0 + 10)canvas.create_oval(x0 - 20,y0 - 20,x0 + 20,y0 + 20)canvas.create_oval(x0 - 50,y0 - 50,x0 + 50,y0 + 50)import mathB = 0.809for i in range(16):a = 2 * math.pi / 16 * ix = math.ceil(x0 + 48 * math.cos(a))y = math.ceil(y0 + 48 * math.sin(a) * B)canvas.create_line(x0,y0,x,y,fill = 'red')canvas.create_oval(x0 - 60,y0 - 60,x0 + 60,y0 + 60)for k in range(501):for i in range(17):a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * kx = math.ceil(x0 + 48 * math.cos(a))y = math.ceil(y0 + 48 + math.sin(a) * B)canvas.create_line(x0,y0,x,y,fill = 'red')for j in range(51):a = (2 * math.pi / 16) * i + (2* math.pi / 180) * k - 1x = math.ceil(x0 + 48 * math.cos(a))y = math.ceil(y0 + 48 * math.sin(a) * B)canvas.create_line(x0,y0,x,y,fill = 'red')mainloop()
'''
【程序60】
題目:畫圖,綜合例子。
1.程序分析:
2.程序源代碼:
鍵盤不知道如何響應,先不寫這個
# include "graphics.h"
# define LEFT 0
# define TOP 0
# define RIGHT 639
# define BOTTOM 479
# define LINES 400
# define MAXCOLOR 15
main()
{
int driver, mode, error;
int x1, y1;
int x2, y2;
int dx1, dy1, dx2, dy2, i=1;
int count=0;
int color=0;
driver=VGA;
mode=VGAHI;
initgraph( & driver, & mode, "");
x1=x2=y1=y2=10;
dx1=dy1=2;
dx2=dy2=3;
while (!kbhit())
{line(x1, y1, x2, y2);
x1 += dx1;
y1 += dy1;
x2 += dx2;
y2 + dy2;
if (x1 <= LEFT | | x1 >= RIGHT)
dx1 = -dx1;
if (y1 <= TOP | | y1 >= BOTTOM)
dy1 = -dy1;
if (x2 <= LEFT | | x2 >= RIGHT)
dx2 = -dx2;
if (y2 <= TOP | | y2 >= BOTTOM)
dy2 = -dy2;
if (++count > LINES)
{setcolor(color);
color = (color >= MAXCOLOR)?0: ++color;
}
}
closegraph();
}
''
'''
【程序61】
題目:打印出楊輝三角形(要求打印出10行如下圖)
1.程序分析:
'''if __name__ == '__main__':a = []
for i in range(10):a.append([])
for j in range(10):a[i].append(0)
for i in range(10):a[i][0] = 1
a[i][i] = 1
for i in range(2, 10):for
j in range(1, i):
a[i][j] = a[i - 1][j - 1] + a[i - 1][j]
from sys import stdoutfor i in range(10):for
j in range(i + 1):
stdout.write(a[i][j])
stdout.write(' ')
print'''
【程序62】
題目:學習putpixel畫點。
1.程序分析:
2.程序源代碼:
#include "stdio.h"
#include "graphics.h"
main()
{int i,j,driver=VGA,mode=VGAHI;initgraph(&driver,&mode,"");setbkcolor(YELLOW);for(i=50;i<=230;i+=20)for(j=50;j<=230;j++)putpixel(i,j,1);for(j=50;j<=230;j+=20)for(i=50;i<=230;i++)putpixel(i,j,1);
}
'''
'''
題目:畫橢圓ellipse
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':from Tkinter import *
x = 360
y = 160
top = y - 30
bottom = y - 30canvas = Canvas(width=400, height=600, bg='white')
for i in range(20):canvas.create_oval(250 - top, 250 - bottom, 250 + top, 250 + bottom)
top -= 5
bottom += 5
canvas.pack()
mainloop()
'''
題目:利用ellipse and rectangle 畫圖。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':from Tkinter import *
canvas = Canvas(width=400, height=600, bg='white')
left = 20
right = 50
top = 50
num = 15
for i in range(num):canvas.create_oval(250 - right, 250 - left, 250 + right, 250 + left)
canvas.create_oval(250 - 20, 250 - top, 250 + 20, 250 + top)
canvas.create_rectangle(20 - 2 * i, 20 - 2 * i, 10 * (i + 2), 10 * (i + 2))
right += 5
left += 5
top += 10canvas.pack()
mainloop()'''
【程序65】
題目:一個最優美的圖案。
1.程序分析:
2.程序源代碼:
'''
import mathclass PTS:def __init__(self):self.x = 0self.y = 0points = []def LineToDemo():from Tkinter import *screenx = 400screeny = 400canvas = Canvas(width=screenx, height=screeny, bg='white')AspectRatio = 0.85MAXPTS = 15h = screenyw = screenxxcenter = w / 2ycenter = h / 2radius = (h - 30) / (AspectRatio * 2) - 20step = 360 / MAXPTSangle = 0.0for i in range(MAXPTS):rads = angle * math.pi / 180.0p = PTS()p.x = xcenter + int(math.cos(rads) * radius)p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)angle += steppoints.append(p)canvas.create_oval(xcenter - radius, ycenter - radius,xcenter + radius, ycenter + radius)for i in range(MAXPTS):for j in range(i, MAXPTS):canvas.create_line(points[i].x, points[i].y, points[j].x, points[j].y)canvas.pack()mainloop()if __name__ == '__main__':LineToDemo()
'''
【程序66】
題目:輸入3個數a,b,c,按大小順序輸出。
1.程序分析:利用指針方法。
2.程序源代碼:
'''
if __name__ == '__main__':n1 = int(raw_input('n1 = :\n'))n2 = int(raw_input('n2 = :\n'))n3 = int(raw_input('n3 = :\n'))def swap(p1, p2):return p2, p1if n1 > n2: n1, n2 = swap(n1, n2)if n1 > n3: n1, n3 = swap(n1, n3)if n2 > n3: n2, n3 = swap(n2, n3)printn1, n2, n3
'''
題目:輸入數組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數組。
1.程序分析:譚浩強的書中答案有問題。
2.程序源代碼:
'''def inp(numbers):for i in range(9):numbers.append(int(raw_input('input a number:\n')))numbers.append(int(raw_input('input a number:\n')))p = 0def max_min(array):max = min = 0for i in range(1, len(array) - 1):p = iif array[p] > array[max]:max = pelif array[p] < array[min]:min = pk = maxl = minarray[0], array[l] = array[l], array[0]array[9], array[k] = array[k], array[9]def outp(numbers):for i in range(len(numbers)):printnumbers[i]if __name__ == '__main__':array = []inp(array)max_min(array)outp(array)'''
【程序68】
題目:有n個整數,使其前面各數順序向后移m個位置,最后m個數變成最前面的m個數
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':n = int(raw_input('the total number is:\n'))m = int(raw_input('back m:\n'))def move(array, n, m):array_end = array[n - 1]for i in range(n - 1, -1, - 1):array[i] = array[i - 1]array[0] = array_endm -= 1if m > 0: move(array, n, m)number = []for i in range(n):number.append(int(raw_input('input a number:\n')))print'orignal number:', numbermove(number, n, m)print'after moved:', number
'''
【程序69】
題目:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。
1. 程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':nmax = 50n = int(raw_input('please input the total of numbers:'))num = []for i in range(n):num.append(i + 1)i = 0k = 0m = 0while m < n - 1:if num[i] != 0: k += 1if k == 3:num[i] = 0k = 0m += 0i += 1if i == n: i = 0i = 0while num[i] == 0: i += 1printnum[i]
'''
題目:寫一個函數,求一個字符串的長度,在main函數中輸入字符串,并輸出其長度。
1.程序分析:
2.程序源代碼
就這樣吧
'''
if __name__ == '__main__':s = raw_input('please input a string:\n')print'the string has %d characters.' % len(s)
'''
【程序71】
題目:編寫input()和output()函數輸入,輸出5個學生的數據記錄。
1.程序分析:
2.程序源代碼:
使用list來模擬結構(不使用class)
stu = [string,string,list]
'''
N = 3
# stu
# num : string
# name : string
# score[4]: list
student = []
for i in range(5):student.append(['', '', []])def input_stu(stu):for i in range(N):stu[i][0] = raw_input('input student num:\n')stu[i][1] = raw_input('input student name:\n')for j in range(3):stu[i][2].append(int(raw_input('score:\n')))def output_stu(stu):for i in range(N):print'%-6s%-10s' % (stu[i][0], stu[i][1])for j in range(3):print'%-8d' % stu[i][2][j]if __name__ == '__main__':input_stu(student)printstudentoutput_stu(student)
'''
【程序72】
題目:創建一個鏈表。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':ptr = []for i in range(5):num = int(raw_input('please input a number:\n'))ptr.append(num)printptr
'''
題目:反向輸出一個鏈表。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':ptr = []for i in range(5):num = int(raw_input('please input a number:\n'))ptr.append(num)printptrptr.reverse()printptr
'''
【程序74】
題目:連接兩個鏈表。
1.程序分析:
2.程序源代碼:
代碼上好像只有,列表排序
'''
if __name__ == '__main__':arr1 = (3, 12, 8, 9, 11)ptr = list(arr1)printptrptr.sort()printptr
'''
【程序75】
題目:放松一下,算一道簡單的題目。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':for i in range(5):n = 0if i != 1: n += 1if i == 3: n += 1if i == 4: n += 1if i != 4: n += 1if n == 3: print64 + i
'''
【程序76】
題目:編寫一個函數,輸入n為偶數時,調用函數求1/2+1/4+...+1/n,當輸入n為奇數時,調用函數1/1+1/3+...+1/n(利用指針函數)
1.程序分析:
2.程序源代碼:
'''def peven(n):i = 0s = 0.0for i in range(2, n + 1, 2):s += 1.0 / ireturn sdef podd(n):s = 0.0for i in range(1, n + 1, 2):s += 1 / ireturn sdef dcall(fp, n):s = fp(n)return sif __name__ == '__main__':n = int(raw_input('input a number:\n'))if n % 2 == 0:sum = dcall(peven, n)else:sum = dcall(podd, n)printsum
锘?''
銆愮▼搴?7
銆?
棰樼洰錛氬~絀虹粌涔狅紙鎸囧悜鎸囬拡鐨勬寚閽堬級
1.
紼嬪簭鍒嗘瀽錛氥€€銆€銆€銆€銆€
2.
紼嬪簭婧愪唬鐮侊細
main()
{char * s[] = {"man", "woman", "girl", "boy", "sister"};
char ** q;
int
k;
for (k=0;k < 5;k++)
{; / *脮芒脌茂脤卯脨麓脢虜脙麓脫茂戮盲 * /printf("%s\n", *q);
}
}
'''
if __name__ == '__main__':s = ["man","woman","girl","boy","sister"]for i in range(len(s)):print s[i]'''
【程序78】
題目:找到年齡最大的人,并輸出。請找出程序中有什么問題。
1.
程序分析:
2.
程序源代碼
'''
if __name__ == '__main__':person = {"li":18,"wang":50,"zhang":20,"sun":22}m = 'li'for key in person.keys():if person[m] < person[key]:m = keyprint '%s,%d' % (m,person[m])
'''
【程序79】
題目:字符串排序。
1.
程序分析:
2.
程序源代碼:
'''
if __name__ == '__main__':str1 = raw_input('input string:\n')str2 = raw_input('input string:\n')str3 = raw_input('input string:\n')print str1,str2,str3if str1 > str2 : str1,str2 = str2,str1if str1 > str3 : str1,str3 = str3,str1if str2 > str3 : str2,str3 = str3,str2print 'after being sorted.'print str1,str2,str3
'''
【程序80】
題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據分為五份,多了一個,這只猴子把多的一個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?
1.
程序分析:
2.
程序源代碼:
'''
if __name__ == '__main__':for i in range(4,10000,4):count = 0m = ifor k in range(5):j = i / 4 * 5 + 1i = jif j % 4 == 0:count += 1else:breaki = mif count == 4:print countbreak'''
【程序81】
題目:809 *??=800 *??+9 *??+1
其中??代表的兩位數, 8 *??的結果為兩位數,9 *??的結果為3位數。求??代表的兩位數,及809 *??后的結果。
1.
程序分析:
2.
程序源代碼
這個程序實在是奇怪
0 = 1:(就寫個程序而已,不去追究了
'''
a = 809
for i in range(10,100):b = i * a + 1if b >= 1000 and b <= 10000 and 8 * i < 100 and 9 * i >= 100:print b,'/',i,' = 809 * ',i,' + ', b % i'''
【程序82】
題目:八進制轉換為十進制
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':n = 0p = raw_input('input a octal number:\n')for i in range(len(p)):n = n * 8 + ord(p[i]) - ord('0')print n
'''
【程序83】
題目:求0—7所能組成的奇數個數。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':sum = 4s = 4for j in range(2,9):print sumif j <= 2:s *= 7else:s *= 8sum += sprint 'sum = %d' % sum
'''
【程序84】
題目:一個偶數總能表示為兩個素數之和。
1.程序分析:
2.程序源代碼:
此代碼有問題,待修改
'''
import math
if __name__ == '__main__':a = int(raw_input('input an odd number:\n'))d = 0c = 2for b in range(3,a / 2 + 1,2):m = 0for c in range(2,int(math.sqrt(b)) + 1):if b % c == 0 :m = cbreakif m > math.sqrt(b):d = a - belse:breakfor c in range(2,int(math.sqrt(d)) + 1):if d % c == 0:m = cbreakif m > math.sqrt(d):print '%d = %d + %d' % (a,b,d)'''
【程序85】
題目:判斷一個素數能被幾個9整除
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':zi = int(raw_input('input a number:\n'))n1 = 1c9 = 1m9 = 9sum = 9while n1 != 0:if sum % zi == 0:n1 = 0else:m9 *= 10sum += m9c9 += 1print '%d can be divided by %d 9' % (sum,c9)
'''
【程序86】
題目:兩個字符串連接程序
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':a = "acegikm"b = "bdfhjlnpq"# 連接字符串c = a + bprint c
'''
【程序87】
題目:回答結果(結構體變量傳遞)
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':class student:x = 0c = 0def f(stu):stu.x = 20stu.c = 'c'a= student()a.x = 3a.c = 'a'f(a)print a.x,a.c
'''
【程序88】
題目:讀取7個數(1—50)的整數值,每讀取一個值,程序打印出該值個數的*。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':n = 1while n <= 7:a = int(raw_input('input a number:\n'))while a < 1 or a > 50:a = int(raw_input('input a number:\n'))print a * '*'n += 1
'''
【程序89】
題目:某個公司采用公用電話傳遞數據,數據是四位的整數,在傳遞過程中是加密的,加密規則如下:每位數字都加上5, 然后用和除以10的余數代替該數字,再將第一位和第四位交換,第二位和第三位交換。
1.程序分析:
2.程序源代碼:
'''
from sys import stdout
if __name__ == '__main__':a = int(raw_input('input a number:\n'))aa = []aa.append(a % 10)aa.append(a % 100 / 10)aa.append(a % 1000 / 100)aa.append(a / 1000)for i in range(4):aa[i] += 5aa[i] %= 10for i in range(2):aa[i],aa[3 - i] = aa[3 - i],aa[i]for i in range(3,-1,-1):stdout.write(aa[i])
'''
【程序90】
題目:專升本一題,讀結果。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':M = 5a = [1,2,3,4,5]i = 0j = M - 1while i < M:a[i],a[j] = a[j],a[i]print ai += 1j -= 1for i in range(5):print a[i]
'''
【程序91】
題目:時間函數舉例1
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':import timeprint time.ctime(time.time())print time.asctime(time.localtime(time.time()))print time.asctime(time.gmtime(time.time()))
'''
【程序92】
題目:時間函數舉例2
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':import timestart = time.time()for i in range(3000):print iend = time.time()print end - start
'''
【程序93】
題目:時間函數舉例3
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':import timestart = time.clock()for i in range(10000):print iend = time.clock()print 'different is %6.3f' % (end - start)'''
【程序94】
題目:時間函數舉例4, 一個猜數游戲,判斷一個人反應快慢。(版主初學時編的)
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':import timeimport randomplay_it = raw_input('do you want to play it.(\'y\' or \'n\')')while play_it == 'y':c = raw_input('input a character:\n')i = random.randint(0,2**32) % 100print 'please input number you guess:\n'start = time.clock()a = time.time()guess = int(raw_input('input your guess:\n'))while guess != i:if guess > i:print 'please input a little smaller'guess = int(raw_input('input your guess:\n'))else:print 'please input a little bigger'guess = int(raw_input('input your guess:\n'))end = time.clock()b = time.time()var = (end - start) / 18.2print var# print 'It took you %6.3 seconds' % time.difftime(b,a))if var < 15:print 'you are very clever!'elif var < 25:print 'you are normal!'else:print 'you are stupid!'print 'Congradulations'print 'The number you guess is %d' % iplay_it = raw_input('do you want to play it.')'''
【程序96】
題目:計算字符串中子串出現的次數
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':str1 = raw_input('input a string:\n')str2 = raw_input('input a sub string:\n')ncount = str1.count(str2)print ncount
'''
【程序97】
題目:從鍵盤輸入一些字符,逐個把它們送到磁盤上去,直到輸入一個 # 為止。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':from sys import stdoutfilename = raw_input('input a file name:\n')fp = open(filename,"w")ch = raw_input('input string:\n')while ch != '#':fp.write(ch)stdout.write(ch)ch = raw_input('')fp.close()'''
【程序98】
題目:從鍵盤輸入一個字符串,將小寫字母全部轉換成大寫字母,然后輸出到一個磁盤文件“test”中保存。輸入的字符串以!結束。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':fp = open('test.txt','w')string = raw_input('please input a string:\n')string = string.upper()fp.write(string)fp = open('test.txt','r')print fp.read()fp.close()
'''
程序99】
題目:有兩個磁盤文件A和B, 各存放一行字母, 要求把這兩個文件中的信息合并(按字母順序排列),輸出到一個新文件C中.
1.
程序分析:
2.
程序源代碼:
'''
if __name__ == '__main__':import stringfp = open('JCP099.py')a = fp.read()fp.close()fp = open('JCP098.py')b = fp.read()fp.close()fp = open('C.txt','w')l = list(a + b)l.sort()s = ''s = s.join(l)fp.write(s)fp.close()''
【程序1】
題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?
1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去掉不滿足條件的排列。
2.程序源代碼:
'''
for i in range(1, 5):for
j in range(1, 5):
for k in range(1, 5):if(i != k) and (i != j) and (j != k):print
i, j, k'''
【程序2】
題目:企業發放的獎金根據利潤提成。利潤(I)低于或等于10萬元時,獎金可提10%;利潤高于10萬元,低于20萬元時,低于10萬元的部分按10%提成,高于10萬元的部分,可可提成7.5%;20萬到40萬之間時,高于20萬元的部分,可提成5%;40萬到60萬之間時高于40萬元的部分,可提成3%;60萬到100萬之間時,高于60萬元的部分,可提成1.5%,高于100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?
1.程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。
2.程序源代碼:
'''
bonus1 = 100000 * 0.1
bonus2 = bonus1 + 100000 * 0.500075
bonus4 = bonus2 + 200000 * 0.5
bonus6 = bonus4 + 200000 * 0.3
bonus10 = bonus6 + 400000 * 0.15i = int(raw_input('input gain:\n'))
if i <= 100000:bonus = i * 0.1
elif i <= 200000:bonus = bonus1 + (i - 100000) * 0.075
elif i <= 400000:bonus = bonus2 + (i - 200000) * 0.05
elif i <= 600000:bonus = bonus4 + (i - 400000) * 0.03
elif i <= 1000000:bonus = bonus6 + (i - 600000) * 0.015
else:bonus = bonus10 + (i - 1000000) * 0.01
print
'bonus = ', bonus
'''
【程序3】
題目:一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
1.程序分析:在10萬以內判斷,先將該數加上100后再開方,再將該數加上268后再開方,如果開方后的結果滿足如下條件,即是結果。請看具體分析:
2.程序源代碼:#include "math.h"
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++){ x=sqrt(i+100); /*x為加上100后開方后的結果*/y=sqrt(i+268); /*y為再加上168后開方后的結果*/if(x*x==i+100&&y*y==i+268)/*如果一個數的平方根的平方等于該數,這說明此數是完全平方數*/printf("\n%ld\n",i);}
}
'''
import mathfor i in range(10000):
# 轉化為整型值x = int(math.sqrt(i + 100))
y = int(math.sqrt(i + 268))
if (x * x == i + 100) and (y * y == i + 268):print
i
'''題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
1.程序分析:以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時需考慮多加一天。
2.程序源代碼:
'''
year = int(raw_input('year:\n'))
month = int(raw_input('month:\n'))
day = int(raw_input('day:\n'))months = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334)
if 0 <= month <= 12:sum = months[month - 1]
else:print
'data error'
sum += day
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):leap = 1
if (leap == 1) and (month > 2):sum += 1
print
'it is the %dth day.' % sum'''
【程序5】
題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。
1.程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,然后再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。
2.程序源代碼:
'''
l = []
for i in range(3):x = int(raw_input('integer:\n'))
l.append(x)
l.sort()
print
l
'''
【程序6】
題目:用*號輸出字母C的圖案。
1.程序分析:可先用'*'號在紙上寫出字母C,再分行輸出。
2.程序源代碼:
'''
print
'Hello Python world!\n'
print
'*' * 10
for i in range(5):print
'* *'
print
'*' * 10
print
'*\n' * 6
'''
【程序7】
題目:輸出特殊圖案,請在c環境中運行,看一看,Very Beautiful!
1.程序分析:字符共有256個。不同字符,圖形不一樣。
2.程序源代碼:
'''
a = 176
b = 219
print
chr(b), chr(a), chr(a), chr(a), chr(b)
print
chr(a), chr(b), chr(a), chr(b), chr(a)
print
chr(a), chr(a), chr(b), chr(a), chr(a)
print
chr(a), chr(b), chr(a), chr(b), chr(a)
print
chr(b), chr(a), chr(a), chr(a), chr(b)'''
【程序8】
題目:輸出9*9口訣。
1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
2.程序源代碼:
#include "stdio.h"
main()
{int i,j,result;printf("\n");for (i=1;i<10;i++){ for(j=1;j<10;j++){result=i*j;printf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,占3位*/}printf("\n");/*每一行后換行*/}
}
'''
for i in range(1, 10):for
j in range(1, 10):
result = i * j
print
'%d * %d = % -3d' % (i, j, result)
print
'''''【程序9】題目:要求輸出國際象棋棋盤。1.程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。2.程序源代碼:#include "stdio.h"main(){int i,j;for(i=0;i<8;i++){for(j=0;j<8;j++)if((i+j)%2==0)printf("%c%c",219,219);elseprintf(" ");printf("\n");}}'''
import sysfor i in range(8):for
j in range(8):
if (i + j) % 2 == 0:sys.stdout.write(chr(219))
sys.stdout.write(chr(219))
else:
sys.stdout.write(' ')
print
''
'''【程序10】題目:打印樓梯,同時在樓梯上方打印兩個笑臉。 1.程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。2.程序源代碼:'''
import syssys.stdout.write(chr(1))
sys.stdout.write(chr(1))
print
''for i in range(1, 11):for
j in range(1, i):
sys.stdout.write(chr(219))
sys.stdout.write(chr(219))
print
'''''【程序11】題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?1.程序分析: 兔子的規律為數列1,1,2,3,5,8,13,21....2.程序源代碼:main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf("%12ld %12ld",f1,f2);if(i%2==0) printf("\n");/*控制輸出,每行四個*/f1=f1+f2; /*前兩個月加起來賦值給第三個月*/f2=f1+f2; /*前兩個月加起來賦值給第三個月*/}}'''
f1 = 1
f2 = 1
for i in range(1, 21):print
'%12d %12d' % (f1, f2)
if (i % 2) == 0:print
''
f1 = f1 + f2
f2 = f1 + f2'''
【程序12】
題目:判斷101-200之間有多少個素數,并輸出所有素數。
1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。
2.程序源代碼:
'''
h = 0
leap = 1
from math import sqrt
from sys import stdoutfor m in range(101, 201):k = int(sqrt(m + 1))
for i in range(2, k + 1):if
m % i == 0: \leap = 0
break
if leap == 1:print'%-4d' % mh += 1if h % 10 == 0:print''
leap = 1
print
'The total is %d' % h
'''
【程序13】
題目:打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該數本身。例如:153是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
2.程序源代碼:
'''
for n in range(100, 1001):i = n / 100j = n / 10 % 10k = n % 10if i * 100 + j * 10 + k == i + j ** 2 + k ** 3:print"%-5d" % n
'''
【程序14】
題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。程序分析:對n進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成:
(1)如果這個質數恰等于n,則說明分解質因數的過程已經結束,打印出即可。
(2)如果n<>k,但n能被k整除,則應打印出k的值,并用n除以k的商,作為新的正整數你n,重復執行第一步。
(3)如果n不能被k整除,則用k+1作為k的值,重復執行第一步。2.程序源代碼:
'''
from sys import stdoutn = int(raw_input("input number:\n"))
print
"n = %d" % nfor i in range(2, n + 1):while n != i:if n % i == 0:stdout.write(str(i))stdout.write("*")n = n / ielse:break
print
"%d" % n
'''
【程序15】
題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。
1.程序分析:(a>b)?a:b這是條件運算符的基本例子。
2.程序源代碼:
不支持這個運算符
'''
score = int(raw_input('input score:\n'))
if score >= 90:grade = 'A'
elif score >= 60:grade = 'B'
else:grade = 'C'print
'%d belongs to %s' % (score, grade)
'''
【程序17】
題目:輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
1.程序分析:利用while語句,條件為輸入的字符不為'\n'.2.程序源代碼:
'''
import strings = raw_input('input a string:\n')
letters = 0
space = 0
digit = 0
others = 0
for c in s:if c.isalpha():letters += 1elif c.isspace():space += 1elif c.isdigit():digit += 1else:others += 1
print
'char = %d,space = %d,digit = %d,others = %d' % (letters, space, digit, others)
'''
題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。
1.程序分析:關鍵是計算出每一項的值。
2.程序源代碼:
'''
Tn = 0
Sn = []
n = int(raw_input('n = :\n'))
a = int(raw_input('a = :\n'))
for count in range(n):Tn = Tn + aa = a * 10Sn.append(Tn)printTnSn = reduce(lambda x, y: x + y, Sn)
print
Sn
'''
【程序19】
題目:一個數如果恰好等于它的因子之和,這個數就稱為“完數”。例如6=1+2+3.編程找出1000以內的所有完數。
1. 程序分析:請參照程序<--上頁程序14.
2.程序源代碼:
'''
from sys import stdoutfor j in range(2, 1001):k = []n = -1s = jfor i in range(1, j):if j % i == 0:n += 1s -= ik.append(i)if s == 0:printjfor i in range(n):stdout.write(k[i])stdout.write(' ')printk[n]'''
【程序20】
題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?
1.程序分析:見下面注釋
2.程序源代碼:
'''
Sn = 100.0
Hn = Sn / 2for n in range(2, 11):Sn += 2 * HnHn /= 2print
'Total of road is %f' % Sn
print
'The tenth is %f meter' % Hn
'''【程序21】
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思維的方法,從后往前推斷。
2.程序源代碼:
'''
x2 = 1
for day in range(9, 0, -1):x1 = (x2 + 1) * 2x2 = x1
print
x1
'''
【程序22】
題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。
1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。
2.程序源代碼:
'''
for i in range(ord('x'), ord('z') + 1):for j in range(ord('x'), ord('z') + 1):if i != j:for k in range(ord('x'), ord('z') + 1):if (i != k) and (j != k):if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):print'order is a -- %s\t b -- %s\tc--%s' % (chr(i), chr(j), chr(k))
'''
【程序23】
題目:打印出如下圖案(菱形)*********
****************
1.程序分析:先把圖形分成兩部分來看待,前四行一個規律,后三行一個規律,利用雙重for循環,第一層控制行,第二層控制列。
2.程序源代碼:
'''
from sys import stdoutfor i in range(4):for j in range(2 - i + 1):stdout.write(' ')for k in range(2 * i + 1):stdout.write('*')printfor i in range(3):for j in range(i + 1):stdout.write(' ')for k in range(4 - 2 * i + 1):stdout.write('*')print
'''
【程序24】
題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
1.程序分析:請抓住分子與分母的變化規律。
2.程序源代碼:
'''
# 方法一
a = 2.0
b = 1.0
s = 0
for n in range(1, 21):s += a / bt = aa = a + bb = t
print
s
# 方法二
s = 0.0
for n in range(1, 21):s += a / bb, a = a, a + b
print
ss = 0.0
for n in range(1, 21):s += a / bb, a = a, a + b
print
s
# 方法三
l = []
for n in range(1, 21):b, a = a, a + bl.append(a / b)
print
reduce(lambda x, y: x + y, l)
'''
【程序25】
題目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加變成了累乘。
2.程序源代碼:
'''
# 方法一
n = 0
s = 0
t = 1
for n in range(1, 21):t *= ns += t
print
'1! + 2! + 3! + ... + 20! = %d' % s# 方法二
s = 0
l = range(1, 21)def op(x):r = 1for i in range(1, x + 1):r *= ireturn rs = sum(map(op, l))
print
'1! + 2! + 3! + ... + 20! = %d' % s
'''
【程序26】
題目:利用遞歸方法求5!。
1.程序分析:遞歸公式:fn=fn_1*4!
2.程序源代碼:
'''def fact(j):sum = 0if j == 0:sum = 1else:sum = j * fact(j - 1)return sumfor i in range(5):print'%d! = %d' % (i, fact(i))
'''
【程序27】
題目:利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。
1.程序分析:
2.程序源代碼:
'''def palin(n):next = 0if n <= 1:next = input()printprintnextelse:next = input()palin(n - 1)printnexti = 5
palin(i)
print
'''
【程序28】
題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后 問第一個人,他說是10歲。請問第五個人多大?
1.程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數,需知道第四人的歲數,依次類推,推到第一人(10歲),再往回推。
'''def age(n):if n == 1:c = 10else:c = age(n - 1) + 2return cprint
age(5)
'''
【程序29】
題目:給一個不多于5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。
1. 程序分析:學會分解出每一位數,如下解釋:(這里是一種簡單的算法,師專數002班趙鑫提供)
2.程序源代碼:
'''
x = int(raw_input("input a number:\n"))
a = x / 10000
b = x % 10000 / 1000
c = x % 1000 / 100
d = x % 100 / 10
e = x % 10if a != 0:print"there are 5 ", e, d, c, b, a
elif b != 0:print"there are 4 ", d, c, b, a
elif c != 0:print"there are 3 ", e, d, c
elif d != 0:print"there are 2 ", e, d
else:print"there are 1", e
'''
題目:一個5位數,判斷它是不是回文數。即12321是回文數,個位與萬位相同,十位與千位相同。
1.程序分析:同29例
2.程序源代碼:
'''
x = int(raw_input("input a number:\n"))
x = str(x)
for i in range(len(x) / 2):if x[i] != x[-i - 1]:print'this number is not a huiwen'break
print
'this number is a huiwen'
'''
程序31】
題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。
1.程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。
2.程序源代碼:
'''
from sys import stdinletter = stdin.read(1)
stdin.flush()
while letter != 'Y':if letter == 'S':print'please input second letter'letter = stdin.read(1)stdin.flush()if letter == 'a':print'Saturday'elif letter == 'u':print'Sunday'else:print'data error'breakelif letter == 'F':print'Friday'breakelif letter == 'M':print'Monday'# breakelif letter == 'T':print'please input second letter'letter = stdin.read(1)stdin.flush()if letter == 'u':print'Tuesday'elif letter == 'h':print'Thursday'else:print'data error'breakelif letter == 'W':print'Wednesday'else:print'data error'letter = stdin.read(1)stdin.flush()'''
【程序32】
題目:Press any key to change color, do you want to try it. Please hurry up!
1.程序分析:
2.程序源代碼:
不知道寫呢 :(,先空著吧
'''
'''
【程序33】
題目:學習gotoxy()與clrscr()函數
1.程序分析:
2.程序源代碼:
不知道如何寫 :( 先空著吧
'''
'''
【程序34】
題目:練習函數調用
1. 程序分析:
2.程序源代碼:
'''def hello_world():print'hello world'def three_hellos():for i in range(3):hello_world()if __name__ == '__main__':three_hellos()
'''
【程序35】
題目:文本顏色設置
1.程序分析:
2.程序源代碼:
#include <conio.h>
void main(void)
{
int color;
for (color = 1; color < 16; color++){textcolor(color);/*設置文本顏色*/cprintf("This is color %d\r\n", color);}
textcolor(128 + 15);
cprintf("This is blinking\r\n");
}
'''
'''
【程序36】
題目:求100之內的素數
1.程序分析:
2.程序源代碼:
'''
from math import sqrtif __name__ == '__main__':N = 100a = range(0, N)for i in range(2, int(sqrt(N))):for j in range(i + 1, N):if (a[i] != 0) and (a[j] != 0):if a[j] % a[i] == 0:a[j] = 0printfor i in range(2, N):if a[i] != 0:print"%5d" % a[i]if (i - 2) % 10 == 0:print
'''
【程序37】
題目:對10個數進行排序
1.程序分析:可以利用選擇法,即從后9個比較過程中,選擇一個最小的與第一個元素交換,下次類推,即用第二個元素與后8個進行比較,并進行交換。
2.程序源代碼:
'''
if __name__ == "__main__":N = 10# input dataprint'please input ten num:\n'l = []for i in range(N):l.append(int(raw_input('input a number:\n')))printfor i in range(N):printl[i]print# sort ten numfor i in range(N - 1):min = ifor j in range(i + 1, N):if l[min] > l[j]: min = jl[i], l[min] = l[min], l[i]print'after sorted'for i in range(N):printl[i]'''
【程序38】
題目:求一個3*3矩陣對角線元素之和
1.程序分析:利用雙重for循環控制輸入二維數組,再將a[i][i]累加后輸出。
2.程序源代碼:
'''
if __name__ == '__main__':a = []sum = 0.0for i in range(3):a.append([])for j in range(3):a[i].append(float(raw_input("input num:\n")))for i in range(3):sum += a[i][i]printsum'''
【程序39】
題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。
1. 程序分析:首先判斷此數是否大于最后一個數,然后再考慮插入中間的數的情況,插入后此元素之后的數,依次后移一個位置。
2.程序源代碼:
'''
if __name__ == '__main__':# 方法一a = [1, 4, 6, 9, 13, 16, 19, 28, 40, 100, 0]print'original list is:'for i in range(len(a)):printa[i]number = int(raw_input("insert a new number:\n"))end = a[9]if number > end:a[10] = numberelse:for i in range(10):if a[i] > number:temp1 = a[i]a[i] = numberfor j in range(i + 1, 11):temp2 = a[j]a[j] = temp1temp1 = temp2breakfor i in range(11):printa[i]# 方法二# insrt another numbernumber = int(raw_input('input a number:\n'))if number > a[len(a) - 1]:a.append(number)else:for i in range(len(a)):if a[i] > number:a.insert(i, number)printa'''
【程序40】
題目:將一個數組逆序輸出。
1.程序分析:用第一個與最后一個交換。
2.程序源代碼:
'''
if __name__ == '__main__':a = [9, 6, 5, 4, 1]N = len(a)printafor i in range(len(a) / 2):a[i], a[N - i - 1] = a[N - i - 1], a[i]printa
'''
【程序41】
題目:學習static定義靜態變量的用法
1.程序分析:
2.程序源代碼:
'''# python沒有這個功能了,只能這樣了:)
def varfunc():var = 0print'var = %d' % varvar += 1if __name__ == '__main__':for i in range(3):varfunc()# attribut of class
# 作為類的一個屬性吧
class Static:StaticVar = 5def varfunc(self):self.StaticVar += 1printself.StaticVarprint
Static.StaticVar
a = Static()
for i in range(3):a.varfunc()
'''
題目:學習使用auto定義變量的用法
1.程序分析:
2.程序源代碼:
沒有auto關鍵字,使用變量作用域來舉例吧
'''
num = 2def autofunc():num = 1print'internal block num = %d' % numnum += 1for i in range(3):print'The num = %d' % numnum += 1autofunc()'''
【程序43】
題目:學習使用static的另一用法。
1.程序分析:
2.程序源代碼:
有一個static變量的用法,python是沒有,演示一個python作用域使用方法
'''class Num:nNum = 1def inc(self):self.nNum += 1print'nNum = %d' % self.nNumif __name__ == '__main__':nNum = 2inst = Num()for i in range(3):nNum += 1print'The num = %d' % nNuminst.inc()
'''
【程序44】
題目:學習使用external的用法。
1.程序分析:
2.程序源代碼:
external.py代碼:'''
import externalif __name__ == '__main__':printexternal.add(10, 20)
'''
【程序45】
題目:學習使用register定義變量的方法。
1.程序分析:
2.程序源代碼:
沒有register關鍵字,用整型變量代替
'''
tmp = 0
for i in range(1, 101):tmp += i
print
'The sum is %d' % tmp
'''
【程序46】
題目:宏#define命令練習(1)
1.程序分析:
2.程序源代碼:
沒有C語言的宏,就這么寫了
'''
TRUE = 1
FALSE = 0def SQ(x):return x * xprint
'Program will stop if input value less than 50.'
again = 1
while again:num = int(raw_input('Please input number'))print'The square for this number is %d' % (SQ(num))if num >= 50:again = TRUEelse:again = FALSE
'''
題目:宏#define命令練習(2)
1.程序分析:
2.程序源代碼:
#include "stdio.h"
#define exchange(a,b) { \ /*宏定義中允許包含兩道衣裳命令的情形,此時必須在最右邊加上"\"*/int t;\t=a;\a=b;\b=t;\}'
這個宏定義python不支持
'''def exchange(a, b):a, b = b, areturn (a, b)if __name__ == '__main__':x = 10y = 20print'x = %d,y = %d' % (x, y)x, y = exchange(x, y)print'x = %d,y = %d' % (x, y)
'''
【程序48】
題目:宏#define命令練習(3)
1.程序分析:
2.程序源代碼:
#define LAG >
#define SMA <
#define EQ ==
#include "stdio.h"
void main()
{ int i=10;int j=20;if(i LAG j)printf("\40: %d larger than %d \n",i,j);else if(i EQ j)printf("\40: %d equal to %d \n",i,j);else if(i SMA j)printf("\40:%d smaller than %d \n",i,j);elseprintf("\40: No such value.\n");
}
不知道如何用python實現類似的功能
'''
if __name__ == '__main__':i = 10j = 20if i > j:print'%d larger than %d' % (i, j)elif i == j:print'%d equal to %d' % (i, j)elif i < j:print'%d smaller than %d' % (i, j)else:print'No such value''''
【程序49】
題目:#if #ifdef和#ifndef的綜合應用。
1. 程序分析:
2.程序源代碼:
#include "stdio.h"
#define MAX
#define MAXIMUM(x,y) (x>y)?x:y
#define MINIMUM(x,y) (x>y)?y:x
void main()
{ int a=10,b=20;
#ifdef MAXprintf("\40: The larger one is %d\n",MAXIMUM(a,b));
#elseprintf("\40: The lower one is %d\n",MINIMUM(a,b));
#endif
#ifndef MINprintf("\40: The lower one is %d\n",MINIMUM(a,b));
#elseprintf("\40: The larger one is %d\n",MAXIMUM(a,b));
#endif
#undef MAX
#ifdef MAXprintf("\40: The larger one is %d\n",MAXIMUM(a,b));
#elseprintf("\40: The lower one is %d\n",MINIMUM(a,b));
#endif
#define MIN
#ifndef MINprintf("\40: The lower one is %d\n",MINIMUM(a,b));
#elseprintf("\40: The larger one is %d\n",MAXIMUM(a,b));
#endif
}
這個還是預處理的用法,python不支持這樣的機制,演示lambda的使用。
'''
MAXIMUM = lambda x, y: (x > y) * x + (x < y) * y
MINIMUM = lambda x, y: (x > y) * y + (x < y) * xif __name__ == '__main__':a = 10b = 20print'The largar one is %d' % MAXIMUM(a, b)print'The lower one is %d' % MINIMUM(a, b)
'''
【程序51】
題目:學習使用按位與 & 。
1.程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1
2.程序源代碼:
'''
if __name__ == '__main__':a = 077b = a & 3print'a & b = %d' % bb &= 7print'a & b = %d' % b
'''
題目:學習使用按位或 | 。
1.程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1
2.程序源代碼:
'''if __name__ == '__main__':a = 077b = a | 3print'a | b is %d' % bb |= 7print'a | b is %d' % b
'''
【程序53】
題目:學習使用按位異或 ^ 。
1.程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0
2.程序源代碼:
'''
if __name__ == '__main__':a = 077b = a ^ 3print'The a ^ 3 = %d' % bb ^= 7print'The a ^ b = %d' % b
'''
【程序54】
題目:取一個整數a從右端開始的4~7位。
程序分析:可以這樣考慮:
(1)先使a右移4位。
(2)設置一個低4位全為1,其余全為0的數。可用~(~0<<4)
(3)將上面二者進行&運算。
'''
if __name__ == '__main__':a = int(raw_input('input a number:\n'))b = a >> 4c = ~(~0 << 4)d = b & cprint'%o\t%o' % (a, d)
'''
【程序55】
題目:學習使用按位取反~。
1.程序分析:~0=1; ~1=0;
2.程序源代碼:
如何查看復數的16進制數
'''
if __name__ == '__main__':a = 234b = ~aprint'The a\'s 1 complement is %d' % ba = ~aprint'The a\'s 2 complement is %d' % a
'''
【程序56】
題目:畫圖,學用circle畫圓形。
1.程序分析:
2.程序源代碼:
#include "graphics.h"
main()
{int driver,mode,i;float j=1,k=1;driver=VGA;mode=VGAHI;initgraph(&driver,&mode,"");setbkcolor(YELLOW);for(i=0;i<=25;i++){setcolor(8);circle(310,250,k);k=k+j;j=j+0.3;}
}'''
if __name__ == '__main__':from Tkinter import *canvas = Canvas(width=800, height=600, bg='yellow')canvas.pack(expand=YES, fill=BOTH)k = 1j = 1for i in range(0, 26):canvas.create_oval(310 - k, 250 - k, 310 + k, 250 + k, width=1)k += jj += 0.3mainloop()
'''
【程序57】
題目:畫圖,學用line畫直線。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':from Tkinter import *canvas = Canvas(width=300, height=300, bg='green')canvas.pack(expand=YES, fill=BOTH)x0 = 263y0 = 263y1 = 275x1 = 275for i in range(19):canvas.create_line(x0, y0, x0, y1, width=1, fill='red')x0 = x0 - 5y0 = y0 - 5x1 = x1 + 5y1 = y1 + 5x0 = 263y1 = 275y0 = 263for i in range(21):canvas.create_line(x0, y0, x0, y1, fill='red')x0 += 5y0 += 5y1 += 5mainloop()
'''
【程序58】
題目:畫圖,學用rectangle畫方形。
1.程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
2.程序源代碼:
'''
if __name__ == '__main__':from Tkinter import *root = Tk()root.title('Canvas')canvas = Canvas(root, width=400, height=400, bg='yellow')x0 = 263y0 = 263y1 = 275x1 = 275for i in range(19):canvas.create_rectangle(x0, y0, x1, y1)x0 -= 5y0 -= 5x1 += 5y1 += 5canvas.pack()root.mainloop()
'''
題目:畫圖,綜合例子。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':from Tkinter import *canvas = Canvas(width=300, height=300, bg='green')canvas.pack(expand=YES, fill=BOTH)x0 = 150y0 = 100canvas.create_oval(x0 - 10, y0 - 10, x0 + 10, y0 + 10)canvas.create_oval(x0 - 20, y0 - 20, x0 + 20, y0 + 20)canvas.create_oval(x0 - 50, y0 - 50, x0 + 50, y0 + 50)import mathB = 0.809for i in range(16):a = 2 * math.pi / 16 * ix = math.ceil(x0 + 48 * math.cos(a))y = math.ceil(y0 + 48 * math.sin(a) * B)canvas.create_line(x0, y0, x, y, fill='red')canvas.create_oval(x0 - 60, y0 - 60, x0 + 60, y0 + 60)for k in range(501):for i in range(17):a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * kx = math.ceil(x0 + 48 * math.cos(a))y = math.ceil(y0 + 48 + math.sin(a) * B)canvas.create_line(x0, y0, x, y, fill='red')for j in range(51):a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * k - 1x = math.ceil(x0 + 48 * math.cos(a))y = math.ceil(y0 + 48 * math.sin(a) * B)canvas.create_line(x0, y0, x, y, fill='red')mainloop()
'''
【程序60】
題目:畫圖,綜合例子。
1.程序分析:
2.程序源代碼:
鍵盤不知道如何響應,先不寫這個
#include "graphics.h"
#define LEFT 0
#define TOP 0
#define RIGHT 639
#define BOTTOM 479
#define LINES 400
#define MAXCOLOR 15
main()
{int driver,mode,error;int x1,y1;int x2,y2;int dx1,dy1,dx2,dy2,i=1;int count=0;int color=0;driver=VGA;mode=VGAHI;initgraph(&driver,&mode,"");x1=x2=y1=y2=10;dx1=dy1=2;dx2=dy2=3;while(!kbhit()){line(x1,y1,x2,y2);x1+=dx1;y1+=dy1;x2+=dx2;y2+dy2;if(x1<=LEFT||x1>=RIGHT)dx1=-dx1;if(y1<=TOP||y1>=BOTTOM)dy1=-dy1;if(x2<=LEFT||x2>=RIGHT)dx2=-dx2;if(y2<=TOP||y2>=BOTTOM)dy2=-dy2;if(++count>LINES){setcolor(color);color=(color>=MAXCOLOR)?0:++color;}}closegraph();
}
''
'''
【程序61】
題目:打印出楊輝三角形(要求打印出10行如下圖)
1.
程序分析:
'''if __name__ == '__main__':a = []for i in range(10):a.append([])for j in range(10):a[i].append(0)for i in range(10):a[i][0] = 1a[i][i] = 1for i in range(2,10):for j in range(1,i):a[i][j] = a[i - 1][j-1] + a[i - 1][j]from sys import stdoutfor i in range(10):for j in range(i + 1):stdout.write(a[i][j])stdout.write(' ')print'''
【程序62】
題目:學習putpixel畫點。
1.
程序分析:
2.
程序源代碼:
# include "stdio.h"
# include "graphics.h"
main()
{int
i, j, driver = VGA, mode = VGAHI;
initgraph( & driver, & mode, "");
setbkcolor(YELLOW);
for (i=50;i <= 230;i += 20)
for (j=50;j <= 230;j++)
putpixel(i, j, 1);
for (j=50;j <= 230;j += 20)
for (i=50;i <= 230;i++)
putpixel(i, j, 1);
}
'''
'''
題目:畫橢圓ellipse
1.
程序分析:
2.
程序源代碼:
'''
if __name__ == '__main__':from Tkinter import *x = 360y = 160top = y - 30bottom = y - 30canvas = Canvas(width = 400,height = 600,bg = 'white')for i in range(20):canvas.create_oval(250 - top,250 - bottom,250 + top,250 + bottom)top -= 5bottom += 5canvas.pack()mainloop()
'''
題目:利用ellipse and rectangle
畫圖。
1.
程序分析:
2.
程序源代碼:
'''
if __name__ == '__main__':from Tkinter import *canvas = Canvas(width = 400,height = 600,bg = 'white')left = 20right = 50top = 50num = 15for i in range(num):canvas.create_oval(250 - right,250 - left,250 + right,250 + left)canvas.create_oval(250 - 20,250 - top,250 + 20,250 + top)canvas.create_rectangle(20 - 2 * i,20 - 2 * i,10 * (i + 2),10 * ( i + 2))right += 5left += 5top += 10canvas.pack()mainloop()'''
【程序65】
題目:一個最優美的圖案。
1.
程序分析:
2.
程序源代碼:
'''
import math
class PTS:def __init__(self):self.x = 0self.y = 0
points = []def LineToDemo():from Tkinter import *screenx = 400screeny = 400canvas = Canvas(width = screenx,height = screeny,bg = 'white')AspectRatio = 0.85MAXPTS = 15h = screenyw = screenxxcenter = w / 2ycenter = h / 2radius = (h - 30) / (AspectRatio * 2) - 20step = 360 / MAXPTSangle = 0.0for i in range(MAXPTS):rads = angle * math.pi / 180.0p = PTS()p.x = xcenter + int(math.cos(rads) * radius)p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)angle += steppoints.append(p)canvas.create_oval(xcenter - radius,ycenter - radius,xcenter + radius,ycenter + radius)for i in range(MAXPTS):for j in range(i,MAXPTS):canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)canvas.pack()mainloop()
if __name__ == '__main__':LineToDemo()
'''
【程序66】
題目:輸入3個數a, b, c,按大小順序輸出。
1.
程序分析:利用指針方法。
2.
程序源代碼:
'''
if __name__ == '__main__':n1 = int(raw_input('n1 = :\n'))n2 = int(raw_input('n2 = :\n'))n3 = int(raw_input('n3 = :\n'))def swap(p1,p2):return p2,p1if n1 > n2 : n1,n2 = swap(n1,n2)if n1 > n3 : n1,n3 = swap(n1,n3)if n2 > n3 : n2,n3 = swap(n2,n3)print n1,n2,n3
'''
題目:輸入數組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數組。
1.
程序分析:譚浩強的書中答案有問題。
2.
程序源代碼:
'''
def inp(numbers):for i in range(9):numbers.append(int(raw_input('input a number:\n')))numbers.append(int(raw_input('input a number:\n')))
p = 0
def max_min(array):max = min = 0for i in range(1,len(array) - 1):p = iif array[p] > array[max] : max = pelif array[p] < array[min] : min = pk = maxl = minarray[0],array[l] = array[l],array[0]array[9],array[k] = array[k],array[9]def outp(numbers):for i in range(len(numbers)):print numbers[i]if __name__ == '__main__':array = []inp(array)max_min(array)outp(array)'''
【程序68】
題目:有n個整數,使其前面各數順序向后移m個位置,最后m個數變成最前面的m個數
1.
程序分析:
2.
程序源代碼:
'''
if __name__ == '__main__':n = int(raw_input('the total number is:\n'))m = int(raw_input('back m:\n'))def move(array,n,m):array_end = array[n - 1]for i in range(n - 1,-1,- 1):array[i] = array[i - 1]array[0] = array_endm -= 1if m > 0:move(array,n,m)number = []for i in range(n):number.append(int(raw_input('input a number:\n')))print 'orignal number:',numbermove(number,n,m)print 'after moved:',number
'''
【程序69】
題目:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。
1.
程序分析:
2.
程序源代碼:
'''
if __name__ == '__main__':nmax = 50n = int(raw_input('please input the total of numbers:'))num = []for i in range(n):num.append(i + 1)i = 0k = 0m = 0while m < n - 1:if num[i] != 0 : k += 1if k == 3:num[i] = 0k = 0m += 0i += 1if i == n : i = 0i = 0while num[i] == 0: i += 1print num[i]
'''
題目:寫一個函數,求一個字符串的長度,在main函數中輸入字符串,并輸出其長度。
1.
程序分析:
2.
程序源代碼
就這樣吧
'''
if __name__ == '__main__':s = raw_input('please input a string:\n')print 'the string has %d characters.' % len(s)
'''
【程序71】
題目:編寫input()
和output()
函數輸入,輸出5個學生的數據記錄。
1.
程序分析:
2.
程序源代碼:
使用list來模擬結構(不使用class)
stu = [string, string, list]
'''
N = 3
#stu# num : string# name : string# score[4]: list
student = []
for i in range(5):student.append(['','',[]])def input_stu(stu):for i in range(N):stu[i][0] = raw_input('input student num:\n')stu[i][1] = raw_input('input student name:\n')for j in range(3):stu[i][2].append(int(raw_input('score:\n')))def output_stu(stu):for i in range(N):print '%-6s%-10s' % ( stu[i][0],stu[i][1] )for j in range(3):print '%-8d' % stu[i][2][j]if __name__ == '__main__':input_stu(student)print studentoutput_stu(student)
'''
【程序72】
題目:創建一個鏈表。
1.
程序分析:
2.
程序源代碼:
'''
if __name__ == '__main__':ptr = []for i in range(5):num = int(raw_input('please input a number:\n'))ptr.append(num)print ptr
'''
題目:反向輸出一個鏈表。
1.
程序分析:
2.
程序源代碼:
'''
if __name__ == '__main__':ptr = []for i in range(5):num = int(raw_input('please input a number:\n'))ptr.append(num)print ptrptr.reverse()print ptr
'''
【程序74】
題目:連接兩個鏈表。
1.
程序分析:
2.
程序源代碼:
代碼上好像只有,列表排序
'''
if __name__ == '__main__':arr1 = (3,12,8,9,11)ptr = list(arr1)print ptrptr.sort()print ptr
'''
【程序75】
題目:放松一下,算一道簡單的題目。
1.
程序分析:
2.
程序源代碼:
'''
if __name__ == '__main__':for i in range(5):n = 0if i != 1: n += 1if i == 3: n += 1if i == 4: n += 1if i != 4: n += 1if n == 3: print 64 + i
'''
【程序76】
題目:編寫一個函數,輸入n為偶數時,調用函數求1 / 2 + 1 / 4 + ... + 1 / n, 當輸入n為奇數時,調用函數1 / 1 + 1 / 3 + ... + 1 / n(利用指針函數)
1.
程序分析:
2.
程序源代碼:
'''
def peven(n):i = 0s = 0.0for i in range(2,n + 1,2):s += 1.0 / ireturn sdef podd(n):s = 0.0for i in range(1, n + 1,2):s += 1 / ireturn sdef dcall(fp,n):s = fp(n)return sif __name__ == '__main__':n = int(raw_input('input a number:\n'))if n % 2 == 0:sum = dcall(peven,n)else:sum = dcall(podd,n)print sum
锘?''
銆愮▼搴?7銆?
棰樼洰錛氬~絀虹粌涔狅紙鎸囧悜鎸囬拡鐨勬寚閽堬級
1.紼嬪簭鍒嗘瀽錛氥€€銆€銆€銆€銆€
2.紼嬪簭婧愪唬鐮侊細
main()
{ char *s[]={"man","woman","girl","boy","sister"};char **q;int k;for(k=0;k<5;k++){;/*脮芒脌茂脤卯脨麓脢虜脙麓脫茂戮盲*/printf("%s\n",*q);}
}
'''
if __name__ == '__main__':s = ["man", "woman", "girl", "boy", "sister"]for i in range(len(s)):prints[i]'''
【程序78】
題目:找到年齡最大的人,并輸出。請找出程序中有什么問題。
1.程序分析:
2.程序源代碼
'''
if __name__ == '__main__':person = {"li": 18, "wang": 50, "zhang": 20, "sun": 22}m = 'li'for key in person.keys():if person[m] < person[key]:m = keyprint'%s,%d' % (m, person[m])
'''
【程序79】
題目:字符串排序。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':str1 = raw_input('input string:\n')str2 = raw_input('input string:\n')str3 = raw_input('input string:\n')printstr1, str2, str3if str1 > str2: str1, str2 = str2, str1if str1 > str3: str1, str3 = str3, str1if str2 > str3: str2, str3 = str3, str2print'after being sorted.'printstr1, str2, str3
'''
【程序80】
題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據分為五份,多了一個,這只猴子把多的一個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':for i in range(4, 10000, 4):count = 0m = ifor k in range(5):j = i / 4 * 5 + 1i = jif j % 4 == 0:count += 1else:breaki = mif count == 4:printcountbreak'''
【程序81】
題目:809*??=800*??+9*??+1 其中??代表的兩位數,8*??的結果為兩位數,9*??的結果為3位數。求??代表的兩位數,及809*??后的結果。
1.程序分析:
2.程序源代碼
這個程序實在是奇怪
0 = 1 :(
就寫個程序而已,不去追究了
'''
a = 809
for i in range(10, 100):b = i * a + 1if b >= 1000 and b <= 10000 and 8 * i < 100 and 9 * i >= 100:printb, '/', i, ' = 809 * ', i, ' + ', b % i'''
【程序82】
題目:八進制轉換為十進制
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':n = 0p = raw_input('input a octal number:\n')for i in range(len(p)):n = n * 8 + ord(p[i]) - ord('0')printn
'''
【程序83】
題目:求0—7所能組成的奇數個數。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':sum = 4s = 4for j in range(2, 9):printsumif j <= 2:s *= 7else:s *= 8sum += sprint'sum = %d' % sum
'''
【程序84】
題目:一個偶數總能表示為兩個素數之和。
1.程序分析:
2.程序源代碼:
此代碼有問題,待修改
'''
import mathif __name__ == '__main__':a = int(raw_input('input an odd number:\n'))d = 0c = 2for b in range(3, a / 2 + 1, 2):m = 0for c in range(2, int(math.sqrt(b)) + 1):if b % c == 0:m = cbreakif m > math.sqrt(b):d = a - belse:breakfor c in range(2, int(math.sqrt(d)) + 1):if d % c == 0:m = cbreakif m > math.sqrt(d):print'%d = %d + %d' % (a, b, d)'''
【程序85】
題目:判斷一個素數能被幾個9整除
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':zi = int(raw_input('input a number:\n'))n1 = 1c9 = 1m9 = 9sum = 9while n1 != 0:if sum % zi == 0:n1 = 0else:m9 *= 10sum += m9c9 += 1print'%d can be divided by %d 9' % (sum, c9)
'''
【程序86】
題目:兩個字符串連接程序
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':a = "acegikm"b = "bdfhjlnpq"# 連接字符串c = a + bprintc
'''
【程序87】
題目:回答結果(結構體變量傳遞)
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':class student:x = 0c = 0def f(stu):stu.x = 20stu.c = 'c'a = student()a.x = 3a.c = 'a'f(a)printa.x, a.c
'''
【程序88】
題目:讀取7個數(1—50)的整數值,每讀取一個值,程序打印出該值個數的*。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':n = 1while n <= 7:a = int(raw_input('input a number:\n'))while a < 1 or a > 50:a = int(raw_input('input a number:\n'))printa * '*'n += 1
'''
【程序89】
題目:某個公司采用公用電話傳遞數據,數據是四位的整數,在傳遞過程中是加密的,加密規則如下:每位數字都加上5,然后用和除以10的余數代替該數字,再將第一位和第四位交換,第二位和第三位交換。
1.程序分析:
2.程序源代碼:
'''
from sys import stdoutif __name__ == '__main__':a = int(raw_input('input a number:\n'))aa = []aa.append(a % 10)aa.append(a % 100 / 10)aa.append(a % 1000 / 100)aa.append(a / 1000)for i in range(4):aa[i] += 5aa[i] %= 10for i in range(2):aa[i], aa[3 - i] = aa[3 - i], aa[i]for i in range(3, -1, -1):stdout.write(aa[i])
'''
【程序90】
題目:專升本一題,讀結果。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':M = 5a = [1, 2, 3, 4, 5]i = 0j = M - 1while i < M:a[i], a[j] = a[j], a[i]printai += 1j -= 1for i in range(5):printa[i]
'''【程序91】
題目:時間函數舉例1
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':import timeprinttime.ctime(time.time())printtime.asctime(time.localtime(time.time()))printtime.asctime(time.gmtime(time.time()))
'''
【程序92】
題目:時間函數舉例2
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':import timestart = time.time()for i in range(3000):printiend = time.time()printend - start
'''
【程序93】
題目:時間函數舉例3
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':import timestart = time.clock()for i in range(10000):printiend = time.clock()print'different is %6.3f' % (end - start)'''
【程序94】
題目:時間函數舉例4,一個猜數游戲,判斷一個人反應快慢。(版主初學時編的)
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':import timeimport randomplay_it = raw_input('do you want to play it.(\'y\' or \'n\')')while play_it == 'y':c = raw_input('input a character:\n')i = random.randint(0, 2 ** 32) % 100print'please input number you guess:\n'start = time.clock()a = time.time()guess = int(raw_input('input your guess:\n'))while guess != i:if guess > i:print'please input a little smaller'guess = int(raw_input('input your guess:\n'))else:print'please input a little bigger'guess = int(raw_input('input your guess:\n'))end = time.clock()b = time.time()var = (end - start) / 18.2printvar# print 'It took you %6.3 seconds' % time.difftime(b,a))if var < 15:print'you are very clever!'elif var < 25:print'you are normal!'else:print'you are stupid!'print'Congradulations'print'The number you guess is %d' % iplay_it = raw_input('do you want to play it.')'''
【程序96】
題目:計算字符串中子串出現的次數
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':str1 = raw_input('input a string:\n')str2 = raw_input('input a sub string:\n')ncount = str1.count(str2)printncount
'''
【程序97】
題目:從鍵盤輸入一些字符,逐個把它們送到磁盤上去,直到輸入一個#為止。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':from sys import stdoutfilename = raw_input('input a file name:\n')fp = open(filename, "w")ch = raw_input('input string:\n')while ch != '#':fp.write(ch)stdout.write(ch)ch = raw_input('')fp.close()'''
【程序98】
題目:從鍵盤輸入一個字符串,將小寫字母全部轉換成大寫字母,然后輸出到一個磁盤文件“test”中保存。輸入的字符串以!結束。
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':fp = open('test.txt', 'w')string = raw_input('please input a string:\n')string = string.upper()fp.write(string)fp = open('test.txt', 'r')printfp.read()fp.close()
'''
程序99】
題目:有兩個磁盤文件A和B,各存放一行字母,要求把這兩個文件中的信息合并(按字母順序排列), 輸出到一個新文件C中.
1.程序分析:
2.程序源代碼:
'''
if __name__ == '__main__':import stringfp = open('JCP099.py')a = fp.read()fp.close()fp = open('JCP098.py')b = fp.read()fp.close()fp = open('C.txt', 'w')l = list(a + b)l.sort()s = ''s = s.join(l)fp.write(s)fp.close()
?
總結
以上是生活随笔為你收集整理的99道python测试题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DNS基础:域名解析、多重域名解析、特殊
- 下一篇: 【办公应用软件】万彩办公大师教程丨屏幕O