Python基礎(chǔ)及應(yīng)用習題答案3_第1頁
Python基礎(chǔ)及應(yīng)用習題答案3_第2頁
Python基礎(chǔ)及應(yīng)用習題答案3_第3頁
Python基礎(chǔ)及應(yīng)用習題答案3_第4頁
Python基礎(chǔ)及應(yīng)用習題答案3_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1,通過選擇結(jié)構(gòu)把一門課的成績轉(zhuǎn)化成績點并輸出,其中績點的計算為了簡

單采用9。?1。0分4.0,8。-89分3.0,70?79分2.0,6。-69分1.0的

規(guī)則。

a=int(input())#輸入成綠

if(90<=a<=100):

b=4.0

elif(80<=a<=89):

b=3.0

elif(70<=a<=79):

b=2.0

elif(60<=a<=69):

b=1.0

else:

b="成績有誤”

print(b)

2.給定一個分段函數(shù),在xNO的時候,y=x9在x<0的時候,為

x=0,實現(xiàn)這個函數(shù)的計算邏輯。

x=int(input())#M\

if(x>=0):

y=x

else:

y=0

print(y)出岔二|

3.給定三個整數(shù)a,b,c,判斷哪個最小。

a=int(input())#^zAa

b=int(input())#獺人b

c=int(input())#獺入c

”““輸出最小的整數(shù)“小

if(a==min(a,b,c)):

print("最小整數(shù)為:a")

if(b==min(a,b,c)):

print("最小整數(shù)為:b")

if(c==min(a,b,c)):

print("最小整數(shù)為:c“)

4,使用循環(huán)計算人工00中所有偶數(shù)的和。

Sum=0

foriinrange(2,101,2):

Sum+=i

print(Sum)f物力:一裁終委

5.水仙花數(shù)是指一個n位數(shù)(n>3),它的每個位上的數(shù)字的n次嘉之和

等于它本身。輸出所有三位數(shù)水仙花數(shù)。

foriinrange(100,1000):

ai=i%10片個位

bi=(i//10)%10#十位

ci=i//1004百位

if((ai*ai*ai+bi*bi*bi+ci*ci*ci)==i):

print(i)

6,斐波那契數(shù)列是一個遞歸定義的數(shù)列,它的前兩項為1,從第三項開始

每項都是前面兩項的和。輸出100以內(nèi)的斐波那契數(shù)列。

a=l

s=l

print(l)

print(l)

whileTrue:

a,s=s,a+s

if(s<=100):

print(s)

else:

break

7.輸入一個數(shù)字,判斷它在不在斐波那契數(shù)列中。

n=int(input())

a=l

s=l

whileTrue:

if(n==s):

print("n",end=")

print(,在斐波那契數(shù)列中)

break

if(n<s):

print(Mn",end=*')

print。不在斐波那契數(shù)列中,)

break

a,s=s,a+s

8.通過自學(xué)遞歸的概念,構(gòu)造一個遞歸函數(shù)實現(xiàn)斐波那契數(shù)列的計算。

deffibonacci(n):

globalfibo

ifninfibo:

returnfibo[n]

r=fibonacci(n-1)+fibonacci(n-2)

fibo[n]=r

returnr

if―name—==*_main_*:

fibo={1:1,2:1)

print(fibonacci(int(input())))

9.通過使用默認參數(shù),實現(xiàn)可以構(gòu)造一個等差數(shù)列的函數(shù),參數(shù)包括等差數(shù)

列的起始、結(jié)束以及公差,注意公差應(yīng)該可以為負數(shù)。

defequidifferent(begin,end,step):

arr=[begin]

if(begin-end)%step!=0:

print("Errorinstep")

return

foriinrange(begin,end,step):

arr.append(i+step)

returnarr

if_name_==,_main_*:

print(equidifferent(100,10,-10))

10.寫一個日期格式化函數(shù),使用鍵值對傳遞參數(shù)。

defFormatDate(year,month,date):

if(month<=0):

printC'sorry,thenumberofmonthmustgreater

than0")

return

elif(month>=13):

printC'sorry,thenumberofmonthmustsmal1er

than13")

return

if(date<=0):

printC'sorry,thenumberofdatemustgreaterthan

0")

return

elif(date>=32):

print("sorry,thenumberofdatemustsmallerthan

32")

return

if(year<0):

year_pre="B.c.

year=-year

else:

year.pre="A.D"

formatstr="{:>6d}{:<5}year{:>3d}month{:>3d}

date".format(year,year_pre,month,date)

returnformatStr

if_name_==*_main_*:

#formalexmaple

print(FormatDate(year=2019,month=2,date=29))

print(FormatDate(month=12,year=1019,date=2))

print(FormatDate(date=19,year=2219,month=2))

print(FormatDate(year=-23,month=2,date=29))

#wrongexample

print(FormatDate(year=2019,month=2,date=32))

print(FormatDate(year=2019,month=13,date=29))

print(FormatDate(year=2019,month=0,date=29))

11.實現(xiàn)能夠返回List中第n大的數(shù)字的函數(shù),n由輸入指定。

importrandom

defmaxN(n,list):

ifn<=0orn>len(list):

print("Errorinn")

return

1ist.sort(reverse=True)

returnlist[n-1]

if_name_==,_mann_*:

list=[random.uniform(0,100)foriinrange(0,10)]

n=int(input())

print(maxN(n,1ist))

12.寫一個函數(shù),求兩個數(shù)的最大公約數(shù)。

importrandom

defmax_divisor(nl,n2):

ifnl<n2:

nl,n2=n2,nl

remainder=nl%n2

whileremainder!=0andremainder!=1:

nl,n2=n2,remainder

remainder=nl%n2

ifremainder==0:

returnn2

elifremainder==1:

return1

if_name_=='_main_*:

nl=random.randint(0,100)

n2=random.randint(0,100)

print(nl,n2)

print(max_divisor(nl,n2))

13.通過循環(huán)和函數(shù),寫一個井字棋游戲,并寫一個井字棋的Alo

#coding:UTF-8

VIIIII

電腦=x=1

人=o=-1

IIIIII

gameover=False

ai_first=False

steps=0

win=0

turn_to_ai=False

turn=False

table=[

r?',?"????"j

riiitiinittij

”111?H

]''

better_pos=[[2,2],

[1,1],

[1,3],

[3,1],

[3,3],

[1,2],

[2,1],

[2,3],

[3,2],

defprinttable():

forrowinrange(3):

print(""+table[row][0]++table[row][1]

+"I"+table[row][2])

ifnotrow==2:

printC'-"*11)

defget_row_value(row):

s=0

foriinrange⑶:

iftable[row][i]==**:

s+=0

eliftabie[row][i]=='o':

s+=-1

eliftabie[row][i]==*x':

s+=1

returns

defget_col_value(col):

s=0

foriinrange(3):

iftabie[i][col]==11:

s+=0

eliftabie[i][col]==

s+=-1

eliftable[i][col]=='x':

s+=1

pass

returns

defget_dia_value(dia):

s=0

#\斜行

ifdia==0:

foriinrange(3):

iftable[i][i]==1':

s+=0

eliftab1e|i|[i]=='o':

s+=-1

eliftable[i][i]=='x':

s+=1

#、/'斜行

elifdia==1:

foriinrange。):

iftable[i][3-l-i]:

s+=0

eliftable[i][3-l-i]=='o'

s+=-1

eliftable[i][3-1-i]=='x*:

s+=1

returns

defget_line_score():

res_array=[-10,-10,-10,-10,-10,-10,-10,-10]

foriinrange(8):

ifint(i/3)==0:

res_array[i]=(get_row_value(i%3))

ifint(i/3)==1:

res_array[i]=(get_col_value(i%3))

ifint(i/3)==2:

res_array[i]=(get_dia_value(i%3))

returnres_array

defjudge():

res_arr=get_line_score()

#print('judge()1,res_arr)

foriinrange(len(res_arr)):

ifabs(res_arr[i])==3:

globalgameover

gameover=True

globalsteps

steps=0

globalwin

ifai.first:

ifsteps%2==1:

win=1

else:

win=-1

else:

ifsteps%2==0:

win=1

else:

win=-1

printCgameover*)

ifwin==1:

print("I****computerwin****「)

elifwin==-1:

print("I****computerwin****「')

ifsteps==9:

gameover=True

steps=0

print(*gameover1)

print,平局****「')

deffind_goal(res_arr,v):

foriinrange(len(res_arr)):

ifres.arr[i]==v:

print(*|v|=2:(v,i,arr[i])1,v,i

res_arr[i])

ifint(i/3)==0:

forjinrange(3):

if(table[int(i%3)][j])==

return[i+1,j+1]

elifint(i/3)==1:

forjinrange⑶:

if(table[j][int(i%3)])==

return[j+1,int(i%3)+1]

elifint(i/3)==2:

#\

ifi%3==0:

forjinrange⑶:

iftable[j][j]==1,:

return[j+1,j+1]

#V1

ifi%3==1:

forjinrange(3):

iftable[j][3-l-j]:

return[j+1,(3-l-j)+l]

else:

return[]

defcal_position():

printC'caVpositionO')

res_arr=get_line_score()

#找我方2連

p=find_goal(res_arr,2)

iflen(p)==2:

printC'p_2",p)

returnp

#如果我方?jīng)]有2連就找敵方2連

p=find.goal(res_arr,-2)

iflen(p)==2:

pr-int("p_-2",p)

returnp

#如果沒有2連,不管那么多啦!直接根據(jù)最優(yōu)位置放置棋子

fori1nrange(len(better_pos)):

p=better_pos[i]

iftable[p[0]-l]=='1:

better_pos.remove(better_pos[i])

print("p_%d",i,p)

returnp

else:

print(usomebuginsomewhere!")

first_flag=False

whilenotfirst_flag:

first=input。請選擇L電腦先下或者2:您先下:\n”)

iffirstnotin['1','2']:

print。請選1或2不要亂選哦”)

elifstr(first)=='1':

ai_first=True

turn_to_ai=True

first_flag=True

break

elifstr(first)==*2':

ai_first=False

first_flag=True

break

whilenotgameover:

ifturn_to_ai:

pos=cal_position()

tabie[int(pos[0])-1][int(pos[1])-1]="x"

steps+=1

printtable()

judge()

turn_to_ai=False

else:

pos=input(*inputyourchoisebyrowandcol

(e.g.13):\n')

print(str(pos[0])+str(type(pos[0])))

print(str(pos[l])+str(type(pos[l])))

ifnotpos[0]in["1",

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論