python经典100例(21-40)
生活随笔
收集整理的這篇文章主要介紹了
python经典100例(21-40)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
'''
?【程序21】
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不癮,又多吃了一個
第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思維的方法,從后往前推斷。
2.程序源代碼:
'''
x2 = 1
for day in range(9,0,-1):
??? x1 = (x2 + 1) * 2
??? x2 = x1
print x1
?
?
'''
【程序22】
題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。
1.程序分析:判斷素數(shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),如果能被整除,
則表明此數(shù)不是素數(shù),反之是素數(shù)。
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))
?
?
'''
【程序24】
題目:有一分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數(shù)列的前20項之和。
1.程序分析:請抓住分子與分母的變化規(guī)律。
2.程序源代碼:
'''
#方法一
a = 2.0
b = 1.0
s = 0
for n in range(1,21):
??? s += a / b
??? t = a
??? a = a + b
??? b = t
print s
#方法二
s = 0.0
for n in range(1,21):
??? s += a / b
??? b,a = a , a + b
print s
?
s = 0.0
for n in range(1,21):
??? s += a / b
??? b,a = a , a + b
print s
#方法三
l = []
for n in range(1,21):
??? b,a = a,a + b
??? l.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 *= n
??? s += t
print '1! + 2! + 3! + ... + 20! = %d' % s
?
#方法二
s = 0
l = range(1,21)
def op(x):
??? r = 1
??? for i in range(1,x + 1):
??????? r *= i
??? return 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 = 0
??? if j == 0:
??????? sum = 1
??? else:
??????? sum = j * fact(j - 1)
??? return sum
?
for i in range(5):
print '%d! = %d' % (i,fact(i))
?
?
''
【程序27】
題目:利用遞歸函數(shù)調(diào)用方式,將所輸入的5個字符,以相反順序打印出來。
1.程序分析:
2.程序源代碼:
'''
def palin(n):
??? next = 0
??? if n <= 1:
??????? next = input()
??????? print
??????? print next
??? else:
??????? next = input()
??????? palin(n - 1)
??????? print next
?
?
i = 5
palin(i)
print
?
?
'''
【程序28】
題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數(shù),他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后 問第一個人,他說是10歲。請問第五個人多大?
?
1.程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數(shù),需知道第四人的歲數(shù),依次類推,推到第一人(10歲),再往回推。
'''
def age(n):
??? if n == 1: c = 10
??? else: c = age(n - 1) + 2
??? return c
print age(5)
?
?
'''
【程序29】
題目:給一個不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字。
1. 程序分析:學(xué)會分解出每一位數(shù),如下解釋:(這里是一種簡單的算法,師專數(shù)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 % 10
?
if 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位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個位與萬位相同,十位與千位相同?! ?/span>
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】
題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續(xù)
判斷第二個字母。
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'
??????????? break
??? elif letter == 'F':
??????? print 'Friday'
??????? break
??? elif letter == 'M':
??????? print 'Monday'
??????? #break
??? elif 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'
??????????? break
??? elif letter == 'W':
??????? print 'Wednesday'
??? else:
??????? print 'data error'
??? letter = stdin.read(1)
??? stdin.flush()
?
?
'''
【程序32】
題目:按相反的順序輸出列表的值。
1.程序分析:
2.程序源代碼:
?
a = ['one', 'two', 'three']
for i in a[::-1]:
print i
?
list_ = ['a', 'b', 'c', 'd']
list_.reverse()
print list_
?
?
'''
【程序33】
題目:按逗號分隔列表?! ?/span>
1.程序分析:
2.程序源代碼:
L = [1,2,3,4,5]
s1 = ','.join(str(n) for n in L)
print s1
?
L = [1, 2, 3, 4, 5]
L = repr(L)[1:-1]
print L
'''
?
?
'''
【程序34】
題目:練習(xí)函數(shù)調(diào)用
1. 程序分析:
2.程序源代碼:
'''
def hello_world():
??? print 'hello world'
?
def three_hellos():
??? for i in range(3):
??????? hello_world()
if __name__ == '__main__':
??? three_hellos()
?
?
?
'''
【程序35】
題目:文本顏色設(shè)置
1.程序分析:
2.程序源代碼:
#include <conio.h>
void main(void)
{
int color;
for (color = 1; color < 16; color++)
{
textcolor(color);/*設(shè)置文本顏色*/
cprintf("This is color %d\r\n", color);
}
textcolor(128 + 15);
cprintf("This is blinking\r\n");
}
'''
?
?
'''
【程序36】
題目:求100之內(nèi)的素數(shù)
1.程序分析:
2.程序源代碼:
'''
# 輸出指定范圍內(nèi)的素數(shù)
?
# 用戶輸入數(shù)據(jù)
lower = int(input("輸入?yún)^(qū)間最小值: "))
upper = int(input("輸入?yún)^(qū)間最大值: "))
?
for num in range(lower,upper + 1):
??? # 素數(shù)大于 1
??? if num > 1:
??????? for i in range(2,num):
??????????? if (num % i) == 0:
??????????????? break
??????? else:
??????????? print(num)
?
?
for i in range(2,100):
??? if 0? not in [i%n for n in range(2,i)]:
??????? print (i)
?
?
'''
【程序37】
題目:對10個數(shù)進行排序
1.程序分析:可以利用選擇法,即從后9個比較過程中,選擇一個最小的與第一個元素交換,
下次類推,即用第二個元素與后8個進行比較,并進行交換。
2.程序源代碼:
'''
if __name__ == "__main__":
??? N = 10
??? # input data
??? print 'please input ten num:\n'
??? l = []
??? for i in range(N):
??????? l.append(int(raw_input('input a number:\n')))
??? print
??? for i in range(N):
??????? print l[i]
??? print
?
??? # sort ten num
??? for i in range(N - 1):
??????? min = i
??????? for j in range(i + 1,N):
??????????? if l[min] > l[j]:min = j
??????? l[i],l[min] = l[min],l[i]
??? print 'after sorted'
??? for i in range(N):
??????? print l[i]
第二種方法:????????????????
a = []
for i in range(10):
??? a.append(input("entert the num:"))
print a
?
for i in range(9):
??? for j in range(i+1,10):
??????? if a[i] > a[j]:
??????????? a[i],a[j] = a[j],a[i]
print a
?
?
'''
【程序38】
題目:求一個3*3矩陣對角線元素之和
1.程序分析:利用雙重for循環(huán)控制輸入二維數(shù)組,再將a[i][i]累加后輸出。
2.程序源代碼:
'''
if __name__ == '__main__':
??? a = []
??? sum = 0.0
??? for 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】
題目:有一個已經(jīng)排好序的數(shù)組?,F(xiàn)輸入一個數(shù),要求按原來的規(guī)律將它插入數(shù)組中。
1. 程序分析:首先判斷此數(shù)是否大于最后一個數(shù),然后再考慮插入中間的數(shù)的情況,插入后
此元素之后的數(shù),依次后移一個位置。
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] = number
??? else:
??????? for i in range(10):
??????????? if a[i] > number:
??????????????? temp1 = a[i]
??????????????? a[i] = number
??????????????? for j in range(i + 1,11):
?????????? ?????????temp2 = a[j]
??????????????????? a[j] = temp1
??????????????????? temp1 = temp2
??????????????? break
??? for i in range(11):
??????? print a[i]
??? # 方法二
??? # insrt another number
??? number = 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】
題目:將一個數(shù)組逆序輸出。
1.程序分析:用第一個與最后一個交換。
2.程序源代碼:
'''
if __name__ == '__main__':
??? a = [9,6,5,4,1]
??? N = len(a)
??? print a
??? for i in range(len(a) / 2):
??????? a[i],a[N - i - 1] = a[N - i - 1],a[i]
??? print a
?
?
總結(jié)
以上是生活随笔為你收集整理的python经典100例(21-40)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java sftp mget_总结三种S
- 下一篇: python变量以及类型(含笔记)