python基礎(chǔ)練習(xí)題(按條件對(duì)指定序列求和,打印99乘法表、求斐波那契數(shù)列、百馬百擔(dān)、求水仙花數(shù)、求n以內(nèi)的所有質(zhì)數(shù)(素?cái)?shù))和)、集合的講解、一些公關(guān)方法

1.求100(含100)以內(nèi)所有偶數(shù)的和

range(start,end,step)這個(gè)序列生成器,和那個(gè)切片的語(yǔ)法一樣,含頭不含尾,step是步長(zhǎng),這里就不需要在對(duì)j進(jìn)行判斷了,對(duì)于這些簡(jiǎn)單求奇數(shù)和、求偶數(shù)和,就n的倍數(shù)和等等就可以這樣做

s = 0
for j in range(0,101,2):
    s = s + j
print(s) # 2550

2.打印99乘法表

用于理解循環(huán)的使用

# a=0
# while a<9:
#     a+=1
#     b=0
#     while b<a:
#         b+=1
#         print(b,'*',a,'=',a*b,sep='',end='\t') #sep是分隔符默認(rèn)是空格,\t是制表符
#     print()
for i in range(1,10):
    for j in range(1,i+1):
        print(f'{j}*{i}={i*j}',end='\t')
    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
"""

3.求第n位斐波那契數(shù)

這是求第n位斐波那契數(shù),大家可以嘗試多種方法做,我這就不做多的演示了,要是求n(包含n)位前所有斐波那契數(shù)了,創(chuàng)建一個(gè)列表保存一下就好,希望大家可以去做一下,加深對(duì)列表方法的使用

# 斐波那契數(shù)列:1,1,2,3,5,8,13,21,34,55.....
# 從第三位開始:后一個(gè)數(shù)等于前面兩數(shù)相加
n = int(input('請(qǐng)輸入你要求第幾位斐波那契數(shù):'))
a = 0
b = 1
for i in range(n):
    # c = a
    # a = b
    # b = c + b
    # 上里三式可以簡(jiǎn)寫為:
    a,b = b,a+b
print(a)

4.百馬百擔(dān)

一匹大馬能背3擔(dān)貨,一匹中馬能背2擔(dān)貨,兩匹小馬能背1擔(dān)貨,如果用一百匹馬背一百擔(dān)貨,有哪些不同的背法

for i in range(34): # i代表大馬的匹數(shù)
    for j in range(51): # j代表中馬的匹數(shù)
        if i*3+j*2+(100-i-j)/2 == 100:
            print(f'大馬={i},中馬={j},小馬={100-i-j}')
# 大馬=2,中馬=30,小馬=68
# 大馬=5,中馬=25,小馬=70
# 大馬=8,中馬=20,小馬=72
# 大馬=11,中馬=15,小馬=74
# 大馬=14,中馬=10,小馬=76
# 大馬=17,中馬=5,小馬=78
# 大馬=20,中馬=0,小馬=80

5.求水仙花數(shù)

我這定義了一個(gè)函數(shù)去求n位數(shù)的水仙花數(shù),不過(guò)水仙花數(shù)就是100-1000內(nèi)個(gè)位十位百位3次方的和等于本身的數(shù),我那只是類推一下,當(dāng)然也可以不定義函數(shù),直接使用input輸入一個(gè)n或者直接給定n的值

def get_Narcissistic(n):
    for i in range(pow(10,n-1),pow(10,n)):
        s = 0
        for j in range(n):
            s = s+pow(i//10**j%10,n)
        if i==s:
            print(i)
get_Narcissistic(3)
# 153
# 370
# 371
# 407

6.求n以內(nèi)的所有質(zhì)數(shù)(素?cái)?shù))和

質(zhì)數(shù):只能被1和自身整除的數(shù)

n = int(input('請(qǐng)輸入一個(gè)大于或等于2的正整數(shù):'))
# for i in range(2,n+1):
#     flag = True # 每次循環(huán)開始都會(huì)重置為True
#     for j in range(2,int(i**0.5)+1):# 只用循環(huán)到i的平方根就好減少循環(huán)次數(shù)
#         if i%j == 0:
#             flag = False
#             break # 只要有一個(gè)整除就跳出循環(huán)
#     if flag: # 只有上面循環(huán)完,flag還等于True才會(huì)打印i
#         print(i)
# 上面程序也可以寫成
# 這里就涉及到for...else語(yǔ)句的使用:
# 當(dāng)for..in循環(huán)自然結(jié)束時(shí),后面有else就會(huì)運(yùn)行else里的內(nèi)容,沒(méi)有就執(zhí)行下面的內(nèi)容
# 當(dāng)循環(huán)因?yàn)槟撤N原因(如break)提前退出循環(huán),就不會(huì)執(zhí)行else里的內(nèi)容
for i in range(2,n+1):
    for j in range(2,int(i**0.5)+1):# 只用循環(huán)到i的平方根就好減少循環(huán)次數(shù),提高效率
        if i%j == 0:
            break # 只要有一個(gè)整除就跳出循環(huán)
    else: # 只有上面循環(huán)完,flag還等于True才會(huì)打印i
        print(i,end='\t')# 顯示在一行
# 2  3   5  7   11  13  17  19  23  29  31  37  41  43  47  53  59  61  67  71  73  79  83  89  97

---------------------------------------------------

集合的使用

-集合也是用{}包裹起來(lái)的,集合是一個(gè)不重復(fù)的無(wú)序的,所有集合一般用來(lái)去重操作的
-注意:空集合使用set()表示,{}表示空字典

persons = {'zhangsan', 'lisi', 'jack', 'lisi', 'jack', 'wangwu', 'maliu'}
print(persons) # {'zhangsan', 'wangwu', 'jack', 'maliu', 'lisi'}

persons.add('李白')  # 添加一個(gè)元素,但位置不確定,所有你們運(yùn)行的答案和我的一樣但是順序不一樣
print(persons)# {'zhangsan', 'wangwu', 'jack', 'maliu', 'lisi', '李白'}

persons.pop()# 隨機(jī)刪除一個(gè)元素,你們運(yùn)行的答案應(yīng)該和我的應(yīng)該不一樣
print(persons)  # {'wangwu', 'zhangsan', '李白', 'jack', 'maliu'}

persons.remove('李白')# 刪除一個(gè)指定的元素,沒(méi)有的話會(huì)報(bào)錯(cuò)
print(persons)  # {'wangwu', 'zhangsan', 'jack', 'maliu'}

# union 將多個(gè)集合合并生成一個(gè)新的集合
# A.update B 將B拼接到A,B要是一個(gè)可迭代對(duì)象
# 集合是無(wú)序的,所以就不一定是添加在最后
persons.update(('劉能','趙四'))
print(persons)# {'劉能', 'wangwu', 'zhangsan', '趙四', 'jack', 'maliu'}

# persons.clear()#用來(lái)清空集合的

python里的集合也是有交集并集差集一說(shuō)的,當(dāng)然交集并集差集也是可以用字典的方法來(lái)表示的,這里我就不演示了,我感覺(jué)直接用符號(hào)簡(jiǎn)單一點(diǎn),要了解的話也可以查看一下幫助文檔

sing = {'王昭君', '貂蟬', '小喬', '大橋', '火舞', '李白', '韓信'}
dance = {'李元芳', '王昭君', '李白', '韓信', '老虎', '魯班', '后裔'}
print(sing - dance)#A和B的差集 {'大橋', '火舞', '小喬', '貂蟬'}
print(sing & dance)#A和B的交集 {'王昭君', '李白', '韓信'}
print(sing | dance)#A和B的并集 {'李元芳', '王昭君', '后裔', '魯班', '老虎', '火舞', '貂蟬', '李白', '大橋', '小喬', '韓信'}
print(sing ^ dance)#A和B的差集的并集 #{'李元芳', '魯班', '小喬', '后裔', '火舞', '貂蟬', '老虎', '大橋'}

---------------------------------------------------

一些公關(guān)方法

# +:可以用來(lái)拼接,字符串,列表,元組
print('hello' + 'world')# 'helloworld'
print([1, 2, 3] + [4, 5, 6])# [1, 2, 3, 4, 5, 6]
print((1, 2, 3) + (4, 5, 6))# (1, 2, 3, 4, 5, 6)

# -:只能用于集合,求差集
print({1,2,3}-{3})# {1, 2}

# *:可以用于字符串元組列表,不能用于字典和集合
print('hello'*3)# 'hellohellohello'
print([1,2,3]*3)# [1, 2, 3, 1, 2, 3, 1, 2, 3]
print((1,2,3)*3)# (1, 2, 3, 1, 2, 3, 1, 2, 3)

# in:成員運(yùn)算符
print('a'in 'abc')# True
print(1 in[1,2,3])# True
print(1 in (1,2,3))#True
# in用于字典是用來(lái)判斷key是否存在的
print('zhangsan'in{'name':'zhangsan','age':18})# False
print('name'in{'name':'zhangsan','age':18})# True

總結(jié)

以上就是我收集的一些的python基礎(chǔ)練習(xí)題,大家可以寫一下玩一玩
我是白白,一個(gè)喜歡學(xué)習(xí)喜歡編程的年輕人
想學(xué)習(xí)python的可以關(guān)注私信我哦~
歡迎小白、萌新、大佬加入我們
小白學(xué)習(xí)交流基地【(九七四)(七二四)(八九四)】

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容