函數(shù)是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段·。
好處為:
一可以把程序中相對(duì)獨(dú)立的功能模塊抽取出來,減少重讀代碼的編寫;
二是將來可以以重復(fù)的使用這些功能模塊。
定義一個(gè)函數(shù)
你可以定義一個(gè)由自己想要功能的函數(shù),以下是簡(jiǎn)單的規(guī)則:
函數(shù)代碼塊以 def 關(guān)鍵詞開頭,后接函數(shù)標(biāo)識(shí)符名稱和圓括號(hào) ()。
任何傳入?yún)?shù)和自變量必須放在圓括號(hào)中間,圓括號(hào)之間可以用于定義參數(shù)。
函數(shù)內(nèi)容以冒號(hào)起始,且縮進(jìn)。
?
文檔注釋
1 .
""" 實(shí)現(xiàn)功能 Parameters: x-類型 Returns: 返回值的作用 """
2.
""" 實(shí)現(xiàn)功能 :param x:類型 :param y:類型 :return:返回值的作用 """
作用域
Python 中,程序的變量并不是在哪個(gè)位置都可以訪問的,訪問權(quán)限決定于這個(gè)變量是在哪里賦值的。
變量的作用域決定了在哪一部分程序可以訪問哪個(gè)特定的變量名稱。Python的作用域一共有4種,分別是:
- L (Local) 局部作用域
- E (Enclosing) 閉包函數(shù)外的函數(shù)中
- G (Global) 全局作用域
B (Built-in) 內(nèi)建作用域
以 L –> E –> G –>B 的規(guī)則查找,即:在局部找不到,便會(huì)去局部外的局部找(例如閉包),再找不到就會(huì)去全局找,再者去內(nèi)建中找。如果想改變搜索范圍 可以使用global 和nonlocal 關(guān)鍵字。
a=100def foo(): global a a=200 print(a)foo()print(a)結(jié)果:a=200a=200
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
例題
計(jì)算階乘
"""輸入M和N 計(jì)算C(M,N)"""def f(x): y=1 for z in range (1,x+1): y *= z return yprint(__name__)if __import__=='__main__': m=int(input('m=')) n=int(input('n=')) print(f(m)) print(f(m)//f(n)//f(m-n))結(jié)果:m=5n=312010
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
?
計(jì)算輸入兩個(gè)數(shù)的最大公約數(shù)與最小公倍數(shù)
def gcd(x,y): """ 計(jì)算最大公約數(shù) :param x:一個(gè)正整數(shù) :param y:一個(gè)正整數(shù) :return:x,y的最大公約數(shù) """ (x,y)=(y,x) if x>y else (x,y) for factor in range(x, 0, -1): if x % factor == 0 and y % factor == 0: return factordef lcm(x,y): """ 計(jì)算最小公倍數(shù) Parameters: x-正整數(shù) y-正整數(shù) Returns: x和y的最小公倍數(shù) """ return x*y//gcd(x,y)print(gcd(25,5))print(lcm(25,5))結(jié)果:525
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
判斷素?cái)?shù)
from math import sqrtdef is_prime(num): for rea in range(2,int(sqrt(num)+1)): if num%rea==0: return False return True if num !=1 else Falseprint(is_prime(5))結(jié)果:True
?
字符串
字符串是 Python 中最常用的數(shù)據(jù)類型。我們可以使用引號(hào)(‘或”)來創(chuàng)建字符串。
def main(): str1 = 'hello,world' print(len(str1)) print(str1.capitalize()) print(str1.upper()) print(str1) print(str1.find('or')) print(str1.find('shit')) print(str1.index('or')) print(str1.startswith('He')) print(str1.endswith('!')) print(str1.center(50,'*')) print(str1.rjust(50,' ')) str2='abc123456' print(str2[2]) print(str2[2:5]) print(str2[2:]) print(str2[:]) print(str2[::2]) print(str2[::-1]) print(str2[-1:-3:-1]) print(str2[-3:-1]) print(str2.isdigit()) print(str2.isalpha()) print(str2.isalnum()) str3=' jackfrued@126.com' print(str3) print(str3.strip())if __name__ == '__main__': main()結(jié)果:11Hello,worldHELLO,WORLDhello,world7-1FalseFalse*******************hello,world******************** hello,worldcc12c123456abc123456ac246654321cba6545FalseFalseTrue jackfrued@126.comjackfrued@126.com
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
列表
1. 列表
是最常用的Python數(shù)據(jù)類型,它可以作為一個(gè)方括號(hào)內(nèi)的逗號(hào)分隔值出現(xiàn)。
列表的數(shù)據(jù)項(xiàng)不需要具有相同的類型
創(chuàng)建一個(gè)列表,只要把逗號(hào)分隔的不同的數(shù)據(jù)項(xiàng)使用方括號(hào)括起來即可。
def main(): f=[100,200,500] for index, val in enumerate(f): print(index,':',val) f.append(123) print(f) f.insert(1,300) print(f) if 500 in f: f.remove(500) del f[3] print(f.index(100)) print(f.pop()) print(f) list1=[x for x in range (1,10)] list2=list1 print(list2) print(id(list1)) print(id(list2)) list2=list1[:] print(id(list1)) print(id(list2)) print(list2) list1[1]=1000 list2[0]=200 print(list1) print(list2)if __name__ == '__main__': main ()結(jié)果:0 : 1001 : 2002 : 500[100, 200, 500, 123][100, 300, 200, 500, 123]0200[100, 300][1, 2, 3, 4, 5, 6, 7, 8, 9]39073288390732883907328839047432[1, 2, 3, 4, 5, 6, 7, 8, 9][1, 1000, 3, 4, 5, 6, 7, 8, 9][200, 2, 3, 4, 5, 6, 7, 8, 9]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
2.列表容器
f=list(range(1,10)) e=[x ** 2 for x in range(1,10)] g=[x ** x for x in range (1,10)] print(f) print(e) print(g) 結(jié)果:[1, 2, 3, 4, 5, 6, 7, 8, 9][1, 4, 9, 16, 25, 36, 49, 64, 81][1, 4, 27, 256, 3125, 46656, 823543, 16777216, 387420489]
3.列表生成器
列表生成器 這里得到的不是一個(gè)列表,而是一個(gè)生成器對(duì)象
通過生成器可以獲取數(shù)據(jù) 它不占用額外的存儲(chǔ)空間
每次需要數(shù)據(jù)的時(shí)候就通過生成器取數(shù)據(jù) 當(dāng)然這需要花費(fèi)時(shí)間
f = (x ** x for x in range(1, 10)) print(sys.getsizeof(f)) print(f) for val in f: print(val,end=' ')結(jié)果:88<generator object main.<locals>.<genexpr> at 0x0000000002548468>1 4 27 256 3125 46656 823543 16777216 387420489
4. 列表的排序問題
在列表中可以對(duì)列表中的元素進(jìn)行排序
def main(): f=['orange','zoo','apple','internationalization','blueberry'] f2 = sorted (f,reverse=True) print(f) print(f2) f.reverse() f3=(reversed(f)) print(f3) f4=sorted(f,key=str_len,reverse=True) print(f4)結(jié)果:['orange', 'zoo', 'apple', 'internationalization', 'blueberry']['zoo', 'orange', 'internationalization', 'blueberry', 'apple']<list_reverseiterator object at 0x000000000259E9B0>['internationalization', 'blueberry', 'orange', 'apple', 'zoo']
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
如:fibonacci函數(shù)
def fib1(n): d=[1,1] for num in range (2,n): val=d[num-1]+d[num-2] d.append(val) print(d) print(d[::2]) print(d[-1:-3:-1]) d.reverse() print(d)if __name__ == '__main__': fib1(20)結(jié)果:[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765][1, 2, 5, 13, 34, 89, 233, 610, 1597, 4181][6765, 4181][6765, 4181, 2584, 1597, 987, 610, 377, 233, 144, 89, 55, 34, 21, 13, 8, 5, 3, 2, 1, 1]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
元祖
Python 的元組與列表類似,不同之處在于元組的元素不能修改。
元組使用小括號(hào),列表使用方括號(hào)。
元組創(chuàng)建很簡(jiǎn)單,只需要在括號(hào)中添加元素,并使用逗號(hào)隔開即可。
def main(): tup2 = (1, 2, 3, 4, 5 )print ("tup2[1:5]: ", tup2[1:5])結(jié)果:tup2[1:5]: (2, 3, 4, 5)
元組中只包含一個(gè)元素時(shí),需要在元素后面添加逗號(hào),否則括號(hào)會(huì)被當(dāng)作運(yùn)算符使用:
tup1 = (50) type(tup1) <class 'int'> tup1 = (50,) type(tup1) # 加上逗號(hào),類型為元組<class 'tuple'>
元組中的元素值是不允許刪除的.
集合
集合使用花括號(hào)將元素之間用逗號(hào)隔開即可。集合的輸出里不會(huì)出現(xiàn)相同的元素。集合中有并集、交集、差集等,以下為一些簡(jiǎn)單的表達(dá):
def main(): list1=[1,1,2,2,3,3] print(list1) set1={1,1,2,2,3,3} print(set1) set1.add(4) set1.add(5) print(set1) set2={1,3,5,7,9} print(set2) set3=set1 & set2 print(set3) set3=set1 | set2 print(set3) set3=set1-set2 print(set3) set3 = set2.difference(set1) print(set3) set3=set1 ^ set2 print(set3) for val in set2: print(val) print(set2.pop()) if 3 in set2: set2.remove(3) print(set2) print(set2<=set1) print(set1>=set2) if __name__ == '__main__': main()結(jié)果:[1, 1, 2, 2, 3, 3]{1, 2, 3}{1, 2, 3, 4, 5}{1, 3, 5, 7, 9}{1, 3, 5}{1, 2, 3, 4, 5, 7, 9}{2, 4}{9, 7}{2, 4, 7, 9}135791{5, 7, 9}FalseFalse
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
集合,列表,元組間的相互裝換
在python中列表,元祖,集合間可以進(jìn)行相互轉(zhuǎn)化,
def main(): set1={'hello','good','banana','zoo','Python','hello'} print(len(set1)) x=sorted(set1) print(type(x)) print(x) list1=list(set1) print(list1) list2=[1,2,3,1,2,4] set2=set(list2) print(set2) tuple1=(1,1,2,3,4,4) list3=list(tuple1) print(list3) set3=set(tuple1) print(set3)if __name__ == '__main__': main()結(jié)果:5<class 'list'>['Python', 'banana', 'good', 'hello', 'zoo']['banana', 'hello', 'zoo', 'good', 'Python']{1, 2, 3, 4}[1, 1, 2, 3, 4, 4]{1, 2, 3, 4}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
字典
字典是另一種可變?nèi)萜髂P?,且可存?chǔ)任意類型對(duì)象。
字典的每個(gè)鍵值(key=>value)對(duì)用冒號(hào)(:)分割,每個(gè)對(duì)之間用逗號(hào)(,)分割,整個(gè)字典包括在花括號(hào)({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
鍵必須是唯一的,但值則不必。
值可以取任何數(shù)據(jù)類型,但鍵必須是不可變的,如字符串,數(shù)字或元組。
字典值可以是任何的 python 對(duì)象,既可以是標(biāo)準(zhǔn)的對(duì)象,也可以是用戶定義的,但鍵不行。
兩個(gè)重要的點(diǎn)需要記住:
1)不允許同一個(gè)鍵出現(xiàn)兩次。創(chuàng)建時(shí)如果同一個(gè)鍵被賦值兩次,后一個(gè)值會(huì)被記住。
2)鍵必須不可變,所以可以用數(shù)字,字符串或元組充當(dāng),而用列表就不行。
def main(): dict1={'name':'駱昊','age':38,'gender':True} print(dict1['name']) print(dict1['age']) print(dict1['gender']) dict1['name']='王大錘' print(dict1) dict1.update(height=170.5,fav=['吃','喝']) print(dict1.pop('age')) print(dict1.popitem()) print(dict1) for x in dict1: print(x,'-->',dict1[x]) dict.setdefault('motto','成年人的世界沒有容易二字') if 'motto' in dict1: print(dict1['motto']) else: print('呵呵') del dict1['motto'] print(dict1['motto'])if __name__ == '__main__': main()結(jié)果:駱昊Traceback (most recent call last):38True{'name': '王大錘', 'age': 38, 'gender': True} main()38('fav', ['吃', '喝']){'name': '王大錘', 'gender': True, 'height': 170.5}name --> 王大錘gender --> Trueheight --> 170.5成年人的世界沒有容易二字 print(dict1['motto'])KeyError: 'motto'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
綜合題
1. 判斷回文素?cái)?shù)
from math import sqrtnumber=int(input('請(qǐng)輸入一個(gè)整數(shù):'))def is_prime(num): for rea in range(2,int(sqrt(num)+1)): if num%rea==0: return False return True if num !=1 else Falsedef is_palindrome(num): temp=num total=0 while temp>0: total=total * 10+temp % 10 temp//=10 return num==totalif is_palindrome(number) and is_prime(number) : print('%d是回文素?cái)?shù):' % number)else: print('%d不是回文素?cái)?shù):' % number)結(jié)果:請(qǐng)輸入一個(gè)整數(shù):5646556465不是回文素?cái)?shù):
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
2. 21根火柴游戲
"""21跟火柴"""from random import randintdef main(): total=21 while total>0: print('剩余%d跟火柴'% total) while True: num=int(input('你拿幾根火柴:')) if 1<=num<=4 and num<=total: break total-=num if total>0: com=randint(1,min(4,total)) print('計(jì)算機(jī)拿走了%d跟火柴' % com) total-=com if total==0: print('計(jì)算機(jī)拿走了最后一根火柴你輸了!') else: print('你拿走了最后一根火柴你輸了!')if __name__ == '__main__': main()結(jié)果:剩余21跟火柴你拿幾根火柴:1計(jì)算機(jī)拿走了3跟火柴剩余17跟火柴你拿幾根火柴:4計(jì)算機(jī)拿走了3跟火柴剩余10跟火柴你拿幾根火柴:4計(jì)算機(jī)拿走了4跟火柴剩余2跟火柴你拿幾根火柴:1計(jì)算機(jī)拿走了1跟火柴計(jì)算機(jī)拿走了最后一根火柴計(jì)算機(jī)輸了!
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
3.猜數(shù)字游戲
import randomdef main(): answer = random.randint(1, 100) counter = 0 while True: counter += 1 number = int(input('請(qǐng)輸入: ')) if number < answer: print('大一點(diǎn)') elif number > answer: print('小一點(diǎn)') else: print('恭喜你猜對(duì)了!') break print('你總共猜了%d次' % counter) if counter > 7: print('你的智商余額明顯不足')if __name__=='__main__': main()結(jié)果:請(qǐng)輸入: 50大一點(diǎn)請(qǐng)輸入: 75大一點(diǎn)請(qǐng)輸入: 88小一點(diǎn)請(qǐng)輸入: 80大一點(diǎn)請(qǐng)輸入: 85大一點(diǎn)請(qǐng)輸入: 87恭喜你猜對(duì)了!你總共猜了6次
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
4. 輸出驗(yàn)證碼
from random import randintdef generate_code (code_len): """ 生成確定位數(shù)的驗(yàn)證碼 :param code_len: 驗(yàn)證碼長(zhǎng)度 :return: 由大小寫英文字母和數(shù)字構(gòu)成的隨機(jī)驗(yàn)證碼 """ all_chars='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' last_pos=len(all_chars)-1 code='' for _ in range(code_len): index=randint(0,last_pos) code+=all_chars[index] return codeif __name__ == '__main__': print(generate_code(4))結(jié)果:WL9B
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
5. 獲取文件后綴名
def get_suffix(filename,has_dot=False): """ 獲取文件后綴名 :param filename: 文件名 :param has_dot: 后綴名是否帶. :return: 文件后綴名 """ pos=filename.rfind('.') if 0<pos<len(filename)-1: index=pos if has_dot else pos+1 return filename[index:] else: return ''if __name__ == '__main__': print(get_suffix('hello.jpg')) print(get_suffix('abc.',True)) print(get_suffix('a.')) print(get_suffix('hello.c',True)) print(get_suffix('adc.abc'))結(jié)果:jpg.cabc
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
6. 跑馬燈
import osimport timedef main(): str1='歡迎來到前鋒學(xué)習(xí)Python' while True: os.system('cls') print(str1) time.sleep(0.5) str1=str1[1:]+str1[0]if __name__ == '__main__': main()結(jié)果:歡迎來到前鋒學(xué)習(xí)Python迎來到前鋒學(xué)習(xí)Python歡來到前鋒學(xué)習(xí)Python歡迎到前鋒學(xué)習(xí)Python歡迎來。。。。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
7. n顆骰子的和出現(xiàn)的次數(shù)
from random import randintdef roll_dice(n): total=0 for _ in range (n): num=randint(1,6) total+=num return total def main(): f=[0]*11 for _ in range (60000): face=roll_dice(2) f[face-2]+=1 for index in range (len(f)): print('%d搖出了%d次'% (index+2,f[index])) for counter in f: print(counter)if __name__ == '__main__': main()結(jié)果:2搖出了1687次3搖出了3391次4搖出了5040次5搖出了6668次6搖出了8329次7搖出了10095次8搖出了8325次9搖出了6603次10搖出了4986次11搖出了3239次12搖出了1637次168733915040666883291009583256603498632391637
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
7. 一組數(shù)的最大值,最小值,平均數(shù)
def foo(n): c=[] for _ in range (n): var=randint(60,100) c.append(var) print(c) total=0 max = c[0] min=c[0] for i in range (1,n): total += c[i] if c[i]>=max: max=c[i] elif c[i]<=min: min=c[i] return max,min,total/9if __name__ == '__main__': print(foo(8))結(jié)果:[92, 88, 76, 76, 75, 92, 72, 84](92, 72, 62.55555555555556)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
8. 輸出第二大的數(shù)
def second_max(x): (m1,m2)=(x[0],x[1]) if x[0]>x[1] else (x[1],x[0]) for index in range (2,len(x)): if x[index]>m1: m2=m1 m1=x[index] elif x[index]>m2 and x[index]!=m1: m2=x[index] return m1,m2if __name__ == '__main__': my_list=[85,96,56,98,88,98] print(second_max(my_list))
9. 彩票隨機(jī)碼的輸出
"""雙色球-6個(gè)紅色球(1-33)和一個(gè)藍(lán)色球(1-16)"""from random import randintdef select(n): red_balls=[x for x in range(1,34)] select_bolls=[] for _ in range(6): index = randint(0,len(red_balls)) select_bolls.append(red_balls[index]) del red_balls[index] select_bolls.sort() num=randint(0,16) select_bolls.append(num) return select_bollsdef dis_play(balls): for index,ball in enumerate(balls): if index==len(balls)-1: print('|',end=' ') print('%02d' % ball,end=' ') print()def main(): n=int(input('機(jī)選幾注:')) for _ in range(n): dis_play(select(n))if __name__ == '__main__': main()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
10. 輸入分?jǐn)?shù) 輸出最高分?jǐn)?shù)對(duì)應(yīng)的名字
def main(): names = ['劉備', '張飛', '曹操', '袁紹', '關(guān)羽', '趙云', '周瑜'] scores=[] num=0 m=0 for name in names: score = input('請(qǐng)輸入%s的成績(jī): ' % name) scores.append(score) min_score, max_score = scores[0], scores[0] for i in range(1,len(scores)): if scores[i] > max_score: max_score = scores[i] num=max_score m=scores.index(max_score) print('最高分:', max_score) print('%s' % names[m]) del names[m] del scores[m] print(names) print(scores) for i in range(1, len(scores)): if scores[i]==num: print ('%s'% names[i])if __name__ == '__main__': main()結(jié)果:請(qǐng)輸入劉備的成績(jī): 88請(qǐng)輸入張飛的成績(jī): 78請(qǐng)輸入曹操的成績(jī): 85請(qǐng)輸入袁紹的成績(jī): 84請(qǐng)輸入關(guān)羽的成績(jī): 90請(qǐng)輸入趙云的成績(jī): 84請(qǐng)輸入周瑜的成績(jī): 90最高分: 90關(guān)羽['劉備', '張飛', '曹操', '袁紹', '趙云', '周瑜']['88', '78', '85', '84', '84', '90']周瑜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
11. 表格式輸出一組數(shù)據(jù)
def main(): names=['關(guān)羽','張飛','趙云','馬超','貂蟬'] subjects=['語(yǔ)文','數(shù)學(xué)','Python'] table=[[0 for _ in range(3)] for _ in range(5)] for row,name in enumerate(names): print('請(qǐng)輸入%s的成績(jī):'% name) for col,subject in enumerate (subjects): table[row][col]=int(input('%s:' % subject)) print(table)if __name__ == '__main__': main()結(jié)果:請(qǐng)輸入關(guān)羽的成績(jī):語(yǔ)文:89數(shù)學(xué):88Python:88請(qǐng)輸入張飛的成績(jī):語(yǔ)文:78數(shù)學(xué):74Python:75請(qǐng)輸入趙云的成績(jī):語(yǔ)文:85數(shù)學(xué):96Python:98請(qǐng)輸入馬超的成績(jī):語(yǔ)文:78數(shù)學(xué):85Python:95請(qǐng)輸入貂蟬的成績(jī):語(yǔ)文:55數(shù)學(xué):58Python:95[[89, 88, 88], [78, 74, 75], [85, 96, 98], [78, 85, 95], [55, 58, 95]]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
12. 傳入年月日 輸出為一年的第幾天
def leap_year(year): return (year//4==0 and year//100!=0) or (year //400==0)def which_day(year,month,day): total=0 days_of_month=[31,28,31,30,31,30,31,31,30,31,30,31] for index in range (month-1): total += days_of_month[index] if month >2 and leap_year(year): total += 1 return total + dayif __name__ == '__main__': print(which_day(1980,11,28))結(jié)果:332
13. 應(yīng)用題
“"""30個(gè)人出海去玩,船瓦特了,要弄死15個(gè)人,其他人才能活下來,圍成一圈,報(bào)數(shù)1,2,3...,誰(shuí)報(bào)到9就弄死誰(shuí),以此類推. 直到剩下15個(gè)人為止.其中15個(gè)人是基督徒,其他15個(gè)不是基督徒,求這些人的站位."""def main(): persons=[True]*30 counter=0 index=0 number=0 while counter<15: if persons[index]: number += 1 if number==9: persons[index]=False counter += 1 number=0 index += 1 index %= 30 for person in persons: print('基'if person else '非',end='')if __name__ == '__main__': main()結(jié)果:基基基基非非非非非基基非基基基非基非非基基非非非基非非基基非
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
14. 給出行數(shù),輸出相應(yīng)的楊輝三角
def main(): num = int(input('Number of rows: ')) yh = [[]] * num for row in range(num): yh[row] = [None] * (row + 1) for col in range(row+1): if col == 0 or col == row: yh[row][col] = 1 else: yh[row][col] = yh[row - 1][col] + yh[row - 1][col - 1] print(yh[row][col], end='\t') print()if __name__ == '__main__': main()結(jié)果:Number of rows: 51 1 1 1 2 1 1 3 3 1 1 4 6 4 1