1. 程式人生 > >python基礎練習1-25

python基礎練習1-25

1.有四個數字:1、2、3、4,能組成多少個互不相同且無重複數字的三位數?各是多少?

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,求應發放獎金總數?

按階段輸出

i=float(input('淨利潤:'))
arr=[1000000,600000,400000,200000,100000,0]
rat = [0.01,0.015,0.03,0.05,0.075,0.1]
r=0
for index in range(0,6):
    if i > arr[index]:
        r+=(i - arr[index]) * rat[index]
        print(i- arr[index] * rat[index])
        i=arr[index]
        
print(r)

3.一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?

分析過程如下

X+100=N**2------------------------------------1
X+100+168=M**2--------------------------------2
2-1
M**2-N**2=168
(M-N)*(M+N)=168
M OR N >2
THE OTHER
1<OTHER<168/2+1

for i in range(1,85):
    if 168%i == 0:
        j=168/i
        if (i>j) and (i%2==0) and(j%2==0):
            m=(i+j)/2
            n=(i-j)/2
            x=n*n-100
            print(x)

4.輸入某年某月某日,判斷這一天是這一年的第幾天?

year=int(input('year:'))
month=int(input('month:'))
day=int(input('day'))
sum=0
months = [0,31,59,90,120,151,181,212,243,273,304,334]
if 0<month<=12:
    sum+=months[month-1]
else:
    print('wrong')
    
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('{}days'.format(sum))
    

5.輸入三個整數x,y,z,請把這三個數由小到大輸出

l=[]
for i in range(3):
    x=int(input('int:'))
    l.append(x)
l.sort()
print(l)
    

6.斐波那契數列。

def fib(n):
    a,b=1,1
    for i in range(n-1):
        a, b=b, a+b
    return a

7.輸出 9*9 乘法口訣表。

for i in range(1, 10):
    print()
    for j in range(1, i+1):
        print('{}*{}={}'.format(i, j, i*j)

8.判斷101-200之間有多少個素數,並輸出所有素數。

count=0
pn=1
for m in range(101,201):
    k=int(sqrt(m))
    for i in range(2,k+1):
        if m%i == 0:
            pn=0
            break
    if pn == 1:
        count+=1
        print(m)
    pn=1
        
print('total number is {}'.format(count))

9.打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。

for n in range(100,1000):
    i =int(n / 100)
    j = int(n / 10 % 10)
    k = int(n % 10)
    if n == i ** 3 + j ** 3 + k ** 3:
        print (n)

10.將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。

x=int(input('again? yes:1, no:0'))
while x:
    n=int(input('int:'))
    while n!=1:
        for i in range(2, n+1):
            if n%i ==0:
                n=int(n/i)
                if n==1:
                    print('{}'.format(i), end='')
                else:
                    print('{}*'.format(i), end='')
                    break
    x=int(input('again? yes:1, no:0'))
            

11.利用條件運算子的巢狀來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。

score = int(raw_input('輸入分數:\n'))
if score >= 90:
    grade = 'A'
elif score >= 60:
    grade = 'B'
else:
    grade = 'C'
 
print '%d 屬於 %s' % (score,grade)

12.輸入一行字元,分別統計出其中英文字母、空格、數字和其它字元的個數。

import string
s = raw_input('請輸入一個字串:\n')
letters = 0
space = 0
digit = 0
others = 0
for c in s:
    if c.isalpha():
        letters += 1
    elif c.isspace():
        space += 1
    elif c.isdigit():
        digit += 1
    else:
        others += 1
print 'char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others)

13.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加由鍵盤控制

for j in range(5):
    a = str(input("提示:請輸入1~9之間的正整數:"))
    n = int(input("提示:請輸入大於零的正整數:"))
    if n <= 0 or int(a) >= 10 or int(a) <= 0:
        print("請根據提示輸入正確的數")       
        continue
    sum = 0
    for i in range(1, n+1):
        print(int(a*i), end = ' ')
        sum += int(a*i)
    print("這些數的總和為:%d"%sum)

14.一個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如6=1+2+3.程式設計找出1000以內的所有完數

for i in range(1, 1001):
    sum = 0
    for j in range(1, i):
        if i % j == 0:
            sum += j
    if sum == i:
        print(i)

15.一球從100米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?



hei = 100         # 總高度
tim = 10          # 次數
height = []       # 每次反彈高度
for i in range(2,tim+1):  # 計算第二次落地到第十次落地
    hei /= 2
    height.append(hei)
print('第10次落地時,反彈%s高'%(min(height)/2))        # 第十次反彈為第十次落地距離的一半
print('第10次落地時,經過%s米'% (sum(height)*2+100))   # 總和加上第一次的 100

16.猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。

x2=1
for i in range(0,9):
    x1=(x2+1)*2
    x2=x1
print(x1)

17.打印出如下圖案(菱形):

for i in range(1, 5):
    print(' ' * (4 - i), end="")
    for j in range(1, 2 * i):
        print('*', end="")
    print()
for i in range(3, 0, -1):
    print(' ' * (4 - i), end="")
    for j in range(1, 2 * i):
        print('*', end="")
    print()

18.有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。

a=2
b=1
s=0
for i in range(0,20):
    s+=a/b
    t=a
    a=a+b
    b=t
    
print(s)

19.求1+2!+3!+...+20!的和。

n = 0
s = 0
t = 1
for n in range(1,21):
    t *= n
    s += t
print('1! + 2! + 3! + ... + 20! = %d' % s)

20.利用遞迴方法求5!。

def fac(n):
    sum=0
    if n==0:
        sum=1
    else:
        sum=n*fac(j-1)
    return sum

21.利用遞迴函式呼叫方式,將所輸入的5個字元,以相反順序打印出來。

S = input('Input a string:')
L = list(S)
L.reverse()
for i in range(len(L)):
    print(L[i])

22.有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最後問第一個人,他說是10歲。請問第五個人多大?

def age(n):
    if n==1:
        c=10
    else:
        c=age(n-1)+2
    return c
print(age(c))

23.給一個不多於5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。

print( '請輸入大於10的數字:' )
n=int(input())
x=[]
i=0;
while(int(n)!=0):
    x.append(int(n%10))
    i+=1
    n/=10
print( '該數有 %d 位\n' %i )
print( '逆序為:\n')
print( x[::] )

24.一個5位數,判斷它是不是迴文數。即12321是迴文數,個位與萬位相同,十位與千位相同。

a = input("輸入一串數字: ")
b = a[::-1]
if a == b:
    print("%s 是迴文"% a)
else:
    print("%s 不是迴文"% a)

25.請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。

letter = raw_input("please input:")
#while letter  != 'Y':
if letter == 'S':
    print ('please input second letter:')
    letter = raw_input("please input:")
    if letter == 'a':
        print ('Saturday')
    elif letter  == 'u':
        print ('Sunday')
    else:
        print ('data error')
    
elif letter == 'F':
    print ('Friday')
    
elif letter == 'M':
    print ('Monday')
    
elif letter == 'T':
    print ('please input second letter')
    letter = raw_input("please input:")
 
    if letter  == 'u':
        print ('Tuesday')
    elif letter  == 'h':
        print ('Thursday')
    else:
        print ('data error')
        
elif letter == 'W':
    print ('Wednesday')
else:
    print ('data error')