python練習題(二)


11、題目:判斷101-200之間有多少個素數,並輸出所有素數。

#質數只能被1和自己本身整除,也稱為素數

for i in range(101,201):
    for k in range(2,i):
        if i%k==0:
            break
    else:
        print(i,'是質數')

12、打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。
注意:python3中/結果為小數,所以最好用//

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

13、將一個正整數分解質因數。例如:輸入90,打印出90=233*5。

import math
num = int(input('輸入一個整數:'))
arr = []
while num>1:
        for i in range(2,int(math.sqrt(num))+1): # 因為題目是一個沒寫范圍正整數,開方可以有效減少該值過大時候的計算量
            if num%i==0:
                arr.append(i)
                num = num//i 
                break
        else:
            arr.append(num)
            break
print(arr)

14、利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示

score=int(input('請輸入分數'))
if score>=90:
    s='A'
elif score>=60 and score<=89:
    s = 'B'
elif score<60:
    s = 'C'

print('你的分數%d,等級為:%s'%(score,s)

15、輸出指定格式的日期

import datetime
 
if __name__ == '__main__':
 
    # 輸出今日日期,格式為 dd/mm/yyyy。更多選項可以查看 strftime() 方法
    print(datetime.date.today().strftime('%d/%m/%Y'))
 
    # 創建日期對象
    miyazakiBirthDate = datetime.date(1941, 1, 5)
 
    print(miyazakiBirthDate.strftime('%d/%m/%Y'))
 
    # 日期算術運算
    miyazakiBirthNextDay = miyazakiBirthDate + datetime.timedelta(days=1)
 
    print(miyazakiBirthNextDay.strftime('%d/%m/%Y'))
 
    # 日期替換
    miyazakiFirstBirthday = miyazakiBirthDate.replace(year=miyazakiBirthDate.year + 1)
 
    print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))

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

count=0
count1=0
count2=0
count3=0
s=input('請輸入字符:')
for i in s:
    if i.isdigit():
        count=count+1
    elif i.isalpha():
        count1=count1+1
    elif i.isspace():
        count2=count+1
    else:
        count3=count3+1
print('字母%s個,數字%s個,空格%s個,其他%s個'%(count1,count,count2,count3))

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

a=input('被加數字:')
n=int(input('加幾次?:'))
result=0
for i in range(n):
     result+=int(a)
     a+=a[0]
     print('第%s個數%s'%(i+1,a))
print(result)

18、兔子問題

    m1=1 # 滿1月
    m2=0 # 滿倆月(下個月生兔子)
    mm=0 # 可以月月生兔子了
    for i in range(1,10):
        # 過了1個月后
        mm = mm+m2  # 加入新增成年的兔子
        m2 = m1     # 滿月的變成滿倆月
        m1 = mm     # 這個月新出生兔子
        print(i,mm+m1+m2) # 每個月有多少對兔子

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

for num in range(1,1000):
    l=[]
    for i in range(1,num):
        if num%i==0:
            l.append(i)
    if sum(l)==num:
        print(num,l)

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

l=[100]
h=100
print('第一次從100米落下,經過%s米,落地反彈%s米'%(h,h/2))
for i in range(2,11):
    l.append(100)
    h=h/2
    print('第%s次從%s米落下,經過%s米,落地反彈%s米' % (i,h,sum(l),h/2))

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

num=1
for i in range(10-1):
     num=(num+1)*2
print(num)

22、題目022:兩個乒乓球隊進行比賽,各出三人。
甲隊為a,b,c三人,乙隊為x,y,z三人。
已抽簽決定比賽名單。有人向隊員打聽比賽的名單。
a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單

for a in ['x','y','z']:
    for b in ['x','y','z']:
        for c in ['x','y','z']:
            if a!=b and b!=c and a!=c:
                if a!='x' and c!='x' and c!='z':
                    print('a'+a ,'b'+b ,'c'+c)

23、題目023:
打印出如下圖案(菱形):
*






s = '*'
for i in range(1, 8, 2):
    print((s*i).center(7))
for i in reversed(range(1, 6, 2)):
    print((s*i).center(7))

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

a=2.0
b=1.0
sum=0
for i in range(1,21):
    sum=sum+a/b#求和
    t=a#儲存a的值
    a=a+b #每一個分子等於前一項分母和分子之和
    b=t#把之前儲存的a的值重新賦值給b,因為每一項的分母等於前一項的分子
print(sum)

25、求1+2!+3!+…+20!的和

sum=0#定義求和
res=1#定義初始化變量
for i in range(1,21):
    for n in range(1,i+1):
        res=res*n
    sum=sum+res
    res=1#需要每次初始化為1
print(sum)

26、利用遞歸方法求5!。

def fun(x):
    if x>1:
        return x*fun(x-1)
    else:
        return x
print(fun(5))

27、利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來


def output(s,l):
    if l==0:
       return
    print (s[l-1])
    output(s,l-1)

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

age=8
for i in range(1,6):
    age+=2
    print('第%s名年齡為%s'%(i,age))

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

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

x = int(input("請輸入一個數:\n"))
a = x // 10000
b = x % 10000 //1000
c = x % 1000 //100
d = x % 100 //10
e = x % 10

if a != 0:
    print("5 位數:", e, d, c, b, a)
elif b != 0:
    print("4 位數:", e, d, c, b)
elif c != 0:
    print("3 位數:", e, d, c)
elif d != 0:
    print("2 位數:", e, d)
else:
    print("1 位數:", e)


num = 12345
    s = str(num)
    print(len(s))
    print(s[::-1])

30、一個5位數,判斷它是不是回文數。即12321是回文數,個位與萬位相同,十位與千位相同。

s=str(input('請輸入一個5位整數\n'))
for i in range(len(s)):
    if s[0]==s[-1] and s[1]==s[-2] and len(s)==5:
        print(s,'是回文數')
        break
    else:
        print(s,'不是回文數')
        break

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

week = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday']

num=input('請輸入星期的第一個字母\n').upper()
if num.isdigit():
    print('不能輸入數字')
else:
    if   num=='M':
        print('星期一',week[0])
    elif num=='T':
         num=input('請再次輸入第二個字母\n').upper()
         if num=='U':
             print('星期二', week[1])
         elif num=='H':
             print('星期四', week[3])
         else:
             print('輸入不正確')
    elif num=='W':
        print('星期三', week[2])
    elif num=='F':
        print('星期五', week[4])
    elif num=='S':
        num=input('請輸入第二個字母\n').upper()
        if num=='A':
            print('星期六',week[5])
        elif num=='U':
            print('星期日',week[6])
        else:
            print('輸入不正確')

32、按相反的順序輸出列表的值。

l=['5','6','8']
l.reverse()
print(l)

l=['5','6','8']
for i in l[::-1]:
    print(i)

33、按逗號分隔列表。

l=['1','2','3','4','5','6']
print(','.join(l))

34、練習函數調用

def fun():
    print('2018即將過完')
def hah():
    print('任何人都應該被關愛')
if __name__=='__main__':
    fun()
    hah()

35、文本顏色設置

class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'
print(bcolors.WARNING + "警告的顏色字體?" + bcolors.ENDC)

36、100之間的素數

l=[2]
for i in range(3,100):
    for n in range(2,i):
        if i%n==0:
            break
    else:
        l.append(i)
print(l)

37、對10個數進行排序

print('-----請輸入10個數字-----')
n=1
l=[]
while n<11:
    num=input('請輸入第%d個數\n'%n)
    l.append(num)
    n+=1
print(sorted(l))

38、求一個3*3矩陣主對角線元素之和

str = input('請輸入9個數字,用空格隔開,以形成3*3矩陣:\n')
n = [int(i) for i in str.split(' ')]  #獲取9個數字
mx = []  #存儲矩陣
for i in range(3):
    mt = []  #收集矩陣中每行的數字列表
    for j in range(3):
            mt.append(n[i*3 + j])
    mx.append(mt)  #每行數字存儲進mx列表
    print(mt)
print(mx)
sum1 = 0
sum2 = 0
for i in range(3):
    sum1 += mx[i][i]
    sum2 += mx[2-i][i]
print('\方向對角線3元素之和為:%s' % sum1)
print('/方向對角線3元素之和為:%s' % sum2)




l=[[5,2,3],[4,5,6],[7,8,10]]
for k in l:
    print(k)
sum=0
sum1=0
for i in range(len(l)):
    sum+=l[i][i]
    sum1+=l[i][2-i]
print('\\方向對角線元素之和',sum)
print('/方向對角線元素之和',sum1)

39、有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中

import random
l=[1,2,3,4,5,6]
index=random.randint(1,len(l))
s=int(input('請輸入一個數字'))
l.insert(index,s)
print(sorted(l))

40、將一個數組逆序輸出

l=[5,8,3,6,4,7,9,1]
l.reverse()
print(l)

41、模仿靜態變量的用法
如果是函數中的局部變量,每次調用函數都會初始化。而類中的變量,創建類的時候初始化,每次執行類中的函數的時候,不會初始化類變量。看起來是想說這么個意思

def varfunc():
    var = 0
    print 'var = %d' % var
    var += 1
if __name__ == '__main__':
    for i in range(3):
        varfunc()

# 類的屬性
# 作為類的一個屬性吧
class Static:
    StaticVar = 5
    def varfunc(self):
        self.StaticVar += 1
        print self.StaticVar

print Static.StaticVar
a = Static()
for i in range(3):
    a.varfunc()

42、學習使用auto定義變量的用法
局部變量和全局變量的應用域

num = 2
def autofunc():
    num = 1
    print 'internal block num = %d' % num
    num += 1
for i in range(3):
    print 'The num = %d' % num
    num += 1
    autofunc()

43、模仿靜態變量(static)另一案例

class Num:
    nNum = 1
    def inc(self):
        self.nNum += 1
        print 'nNum = %d' % self.nNum

if __name__ == '__main__':
    nNum = 2
    inst = Num()
    for i in range(3):
        nNum += 1
        print 'The num = %d' % nNum
        inst.inc()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM