Python程序設(shè)計基礎(chǔ)(第3版)-習(xí)題及答案 【ch03】Python程序的基本流程控制_第1頁
Python程序設(shè)計基礎(chǔ)(第3版)-習(xí)題及答案 【ch03】Python程序的基本流程控制_第2頁
Python程序設(shè)計基礎(chǔ)(第3版)-習(xí)題及答案 【ch03】Python程序的基本流程控制_第3頁
Python程序設(shè)計基礎(chǔ)(第3版)-習(xí)題及答案 【ch03】Python程序的基本流程控制_第4頁
Python程序設(shè)計基礎(chǔ)(第3版)-習(xí)題及答案 【ch03】Python程序的基本流程控制_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第三章Python程序的基本流程控制1.編寫程序,從鍵盤輸入兩點(diǎn)的坐標(biāo)(xl,y1)和(x2,y2),計算并輸出兩點(diǎn)之間的距離。答案:importmathdefcalculate_distance(x1,y1,x2,y2):distance=math.sqrt((x2-x1)**2+(y2-y1)**2)returndistancedefmain():try:x1=float(input("Enterthex-coordinateofthefirstpoint(x1):"))y1=float(input("Enterthey-coordinateofthefirstpoint(y1):"))x2=float(input("Enterthex-coordinateofthesecondpoint(x2):"))y2=float(input("Enterthey-coordinateofthesecondpoint(y2):"))distance=calculate_distance(x1,y1,x2,y2)print("Thedistancebetweenthetwopointsis:",distance)exceptValueError:print("Invalidinput.Pleaseentervalidnumericalvaluesforcoordinates.")if__name__=="__main__":main()2.編寫程序,從鍵盤輸入年份值和月份值,輸出該年當(dāng)月的日歷(調(diào)用calendar模塊中的month()函數(shù))。答案:importcalendardefmain():try:year=int(input("Entertheyear:"))month=int(input("Enterthemonth(1-12):"))ifmonth<1ormonth>12:print("Invalidmonth.Pleaseenteravaluebetween1and12.")returncal=calendar.month(year,month)print("\nCalendarfortheyear{}andmonth{}:".format(year,month))print(cal)exceptValueError:print("Invalidinput.Pleaseentervalidnumericalvaluesforyearandmonth.")if__name__=="__main__":main()3.編寫程序,產(chǎn)生兩個10以內(nèi)的隨機(jī)整數(shù),以第1個隨機(jī)整數(shù)為半徑、第2個隨機(jī)整數(shù)為高,計算并輸出圓錐體的體積。答案:importrandomimportmathdefcalculate_cone_volume(radius,height):volume=(1/3)*math.pi*radius**2*heightreturnvolumedefmain():try:radius=random.randint(1,10)height=random.randint(1,10)print("Randomlygeneratedradius:",radius)print("Randomlygeneratedheight:",height)volume=calculate_cone_volume(radius,height)print("Thevolumeoftheconeis:",volume)exceptValueError:print("Anerroroccurredwhilegeneratingrandomnumbers.")if__name__=="__main__":main()4.編寫程序,從鍵盤輸入一個年份值,判斷該年是否為國年并輸出判斷結(jié)果。(提示:若該年份值能被4整除且不能被100整除或者該份值能被400整除,則該是年,否則不是。)答案:defis_leap_year(year):if(year%4==0andyear%100!=0)or(year%400==0):returnTrueelse:returnFalsedefmain():try:year=int(input("Enterayear:"))ifis_leap_year(year):print(f"{year}isaleapyear.")else:print(f"{year}isnotaleapyear.")exceptValueError:print("Invalidinput.Pleaseenteravalidyear.")if__name__=="__main__":main()5.編寫程序,從鍵盤輸入三個數(shù),計算并輸出三個數(shù)中最大的數(shù)。答案:deffind_max(a,b,c):returnmax(a,b,c)defmain():try:num1=float(input("Enterthefirstnumber:"))num2=float(input("Enterthesecondnumber:"))num3=float(input("Enterthethirdnumber:"))max_num=find_max(num1,num2,num3)print("Themaximumnumberis:",max_num)exceptValueError:print("Invalidinput.Pleaseentervalidnumericalvalues.")if__name__=="__main__":main()6.編寫程序,從鍵盤輸入三個數(shù),實(shí)現(xiàn)三個數(shù)從小到大排序并輸出結(jié)果。答案:defsort_numbers(num1,num2,num3):#使用列表的sort()方法對三個數(shù)進(jìn)行排序sorted_numbers=[num1,num2,num3]sorted_numbers.sort()returnsorted_numbersdefmain():try:num1=float(input("Enterthefirstnumber:"))num2=float(input("Enterthesecondnumber:"))num3=float(input("Enterthethirdnumber:"))sorted_numbers=sort_numbers(num1,num2,num3)print("Numberssortedinascendingorder:",sorted_numbers)exceptValueError:print("Invalidinput.Pleaseentervalidnumericalvalues.")if__name__=="__main__":main()7.編寫程序,從鍵盤輸入a、b、c的值,計算一元二次方程x+bx+c-0的根,并根據(jù)62-4ac的值大于0等于0及小于0三種情分別進(jìn)行討論。答案:importmathdefquadratic_equation_roots(a,b,c):D=b**2-4*a*cifD>0:x1=(-b+math.sqrt(D))/(2*a)x2=(-b-math.sqrt(D))/(2*a)return"Twodistinctrealroots:x1={:.2f},x2={:.2f}".format(x1,x2)elifD==0:x=-b/(2*a)return"Twoequalrealroots:x={:.2f}".format(x)else:real_part=-b/(2*a)imaginary_part=math.sqrt(abs(D))/(2*a)return"Twocomplexroots:x1={:.2f}+{:.2f}i,x2={:.2f}-{:.2f}i".format(real_part,imaginary_part,real_part,imaginary_part)defmain():try:a=float(input("Enterthevalueofa:"))b=float(input("Enterthevalueofb:"))c=float(input("Enterthevalueofc:"))result=quadratic_equation_roots(a,b,c)print("Rootsofthequadraticequation:")print(result)exceptValueError:print("Invalidinput.Pleaseentervalidnumericalvalues.")if__name__=="__main__":main()8.編寫程序,從鍵盤輸入一個字符,如果是大寫英文字母則將其轉(zhuǎn)換為小寫英文字母,如果是小寫英文字母則將其轉(zhuǎn)換為大寫英文字母,其他字符原樣輸出。答案:defmain():try:char=input("Enteracharacter:")ifchar.isupper():converted_char=char.lower()elifchar.islower():converted_char=char.upper()else:converted_char=charprint("Convertedcharacter:",converted_char)exceptKeyboardInterrupt:print("\nProgramterminatedbytheuser.")if__name__=="__main__":main()9.編寫程序,從鍵盤輸入數(shù)字n,通過循環(huán)結(jié)構(gòu)計算從1到n的乘積。答案:defcalculate_factorial_with_for(n):factorial=1foriinrange(1,n+1):factorial*=ireturnfactorialdefmain():try:n=int(input("Enteranumber(n):"))ifn<0:print("Pleaseenteranon-negativeinteger.")returnresult=calculate_factorial_with_for(n)print(f"Thefactorialof{n}is:{result}")exceptValueError:print("Invalidinput.Pleaseenteravalidinteger.")if__name__=="__main__":main()10.編寫程序,通過循環(huán)結(jié)構(gòu)計算全部的水仙花數(shù)。水仙花數(shù)是一個三位數(shù),該數(shù)正好等于組成該二位數(shù)的各位數(shù)字的立方和。例如,13+5+33-153。答案:defis_armstrong_number(num):num_str=str(num)num_digits=len(num_str)total=0fordigit_charinnum_str:digit=int(digit_char)total+=digit**num_digitsreturntotal==numdefmain():armstrong_numbers=[]fornuminrange(100,1000):ifis_armstrong_number(num):armstrong_numbers.append(num)print("AllArmstrongnumbersbetween100and999are:")print(armstrong_numbers)if__name__=="__main__":main()11.編寫程序,通過循環(huán)結(jié)構(gòu)計算并輸出滿足條件的正方體的體積:正方體棱長從1到10,依次計算體積,當(dāng)體積大于100時停止輸出。答案:defcalculate_cube_volume(side_length):volume=side_length**3returnvolumedefmain():max_volume=100forside_lengthinrange(1,11):volume=calculate_cube_volume(side_length)ifvolume>max_volume:breakprint(f"Cubewithsidelength{side_length}:Volume={volume}")if__name__=="__main__":main()12.編寫程序,從鍵盤輸入一個整數(shù)并判斷該數(shù)的類別:其因數(shù)之和等于數(shù)字本身的數(shù)稱為完全數(shù),比數(shù)字本身大的數(shù)稱為豐沛數(shù),比數(shù)字本身小的數(shù)稱為不足數(shù)。答案:defget_factors_sum(num):factors_sum=0foriinrange(1,num):ifnum%i==0:factors_sum+=ireturnfactors_sumdefmain():try:num=int(input("Enteraninteger:"))ifnum<=0:print("Pleaseenterapositiveinteger.")returnfactors_sum=get_factors_sum(num)iffactors_sum==num:print(f"{num}isaperfectnumber.")eliffactors_sum>num:print(f"{num}isanabundantnumber.")else:print(f"{num}isadeficientnumber.")exceptValueError:print("Invalidinput.Pleaseenteravalidinteger.")if__name__=="__main__":main()13.編寫程序,使用雙重循環(huán)結(jié)構(gòu)輸出如圖3-18所示的運(yùn)行結(jié)果。defprint_diamond(rows):foriinrange(1,rows//2+2):spaces=rows//2+1-istars=2*i-1print(""*spaces+"*"*stars)foriinrange(rows//2,0,-1):spaces=rows//2+1-istars=2*i-1print(""*spaces+"*"*stars)defmain():rows=7print_diamond(rows)if__name__=="__main__":main()14.編寫程序,生成一個0~100之間的隨機(jī)數(shù),然后讓用戶嘗試猜測這個數(shù)字。程序給出猜測方向(更大或更小)的提示,用戶繼續(xù)進(jìn)行猜測,直到用戶猜測成功或輸入一個0~100以外的數(shù)字后退出游戲。答案:importrandomdefmain():secret_number=random.randint(0,100)whileTrue:try:guess=int(input("Guessthenumber(0-100):"))ifguess<0orguess>100:print("Invalidinput.Pleaseenteranumberbetween0and100.")elifguess<secret_number:print("Toolow.Tryagain.")elifguess>secret_number:print("Toohigh.Tryagain.")else:print("Congratulations!Youguessedthecorrectnumber:",secret_number)breakexceptValueError:print("Invalidinput.Pleaseenteravalidinteger.")if__name__=="__main__":main()15.編寫程序,計算Fibonacci數(shù)列的前20項(xiàng)(Fibonacci數(shù)列的特點(diǎn)是,第1、2項(xiàng)的值都為1,從第3項(xiàng)開始,每項(xiàng)都是前兩項(xiàng)之和)。答案:deffibonacci_sequence(n):sequence=[1,1]#初始的前兩項(xiàng)為1foriinrange(2,n):next_number=sequence[i-1]+sequence[i-2]sequence.append(next_number)returnsequencedefmain():n=20fibonacci_seq=fibonacci_sequence(n)print("Fibonaccisequence(first20terms):",fibonacci_seq)if__name__=="__main__":main()16.編寫程序,從鍵盤輸入兩個正整數(shù),計算兩個數(shù)的最大圖3-18第13題的運(yùn)行結(jié)果公約數(shù)和最小公倍數(shù)。答案:defcalculate_gcd(a,b):whileb!=0:a,b=b,a%breturnadefcalculate_lcm(a,b):return(a*b)//calculate_gcd(a,b)defmain():try:num1=int(input("Enterthefirstpositiveinteger:"))num2=int(input("Enterthesecondpositiveinteger:"))ifnum1<=0ornum2<=0:print("Pleaseenterpositiveintegers.")returngcd=calculate_gcd(num1,num2)lcm=calculate_lcm(num1,num2)print("GreatestCommonDivisor(GCD):",gcd)print("LeastCommonMultiple(LCM):",lcm)exceptValueError:print("Invalidinput.Pleaseentervalidpositiveintegers.")if__name__=="__main__":main()17.編寫程序,判斷一個整數(shù)是否為素數(shù)(判斷整數(shù)x是否為素數(shù),最簡單的方法就是用2~x-1之間的所有整數(shù)逐一去除x,若x能被其中任意一個數(shù)整除,則x就不是素數(shù),否則為素數(shù))。答案:defis_prime(number):ifnumber<=1:returnFalseforiinrange(2,number):ifnumber%i==0:returnFalsereturnTruedefmain():try:num=int(input("Enteraninteger:"))ifis_prime(num):print(f"{num}isaprimenumber.")else:print(f"{num}isnotaprimenumber.")exceptValueError:print("Invalidinput.Pleaseenteravalidinteger.")if__name__=="__main__":main()18.編寫程序,實(shí)現(xiàn)一個循環(huán)5次的計算小游戲,每次隨機(jī)產(chǎn)生兩個100以內(nèi)的數(shù)字,讓用戶計算兩個數(shù)字之和并輸入結(jié)果,如果計算結(jié)果正確則加一分,如果計算結(jié)果錯誤則不加分。如果正確率大于或等于80%,則闖關(guān)成功。答案:importrandomdefgenerate_random_numbers():num1=random.randint(1,100)num2=random.randint(1,100)returnnum1,num2defmain():correct_count=0total_attempts=5for_inrange(total_attempts):num1,num2=generate_random_numbers()correct_answer=num1+num2try:user_answer=int(input(f"Whatisthesumof{num1}and{num2}?"))ifuser_answer==correct_answer:print("Correct!")correct_count+=1else:print(f"Wrong!Thecorrectansweris{correct_answer}.")exceptValueError:print("Invalidinput.Pleaseenteravalidinteger.")accuracy=(correct_count/total_attempts)*100print(f"\nYougot{correct_count}outof{total_attempts}correctanswers.")print(f"Youraccuracyis{accuracy:.2f}%.")ifaccuracy>=80:print("Congratulations!Youpassedthechallenge.")else:print("Sorry,youneedahigheraccuracytopassthechallenge.")if__name__=="__main__":main()19.編寫程序,從鍵盤輸入一個姓名(可能為2個字、3個字或4個字),將該姓名的第2個漢字修改為*號。如果索引出錯,則進(jìn)行異常處理并提示索引錯誤。答案:defmodify_second_character(name):try:iflen(name)<2orlen(name)>4:raiseIndexError("Nameshouldhave2,3,or4characters.")modified_name=name[:1]+"*"+name[2:]returnmodified_nameexceptIndexErrorase:print("Error:",e)returnNonedefmain():name=input("Enteraname(2,3,

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論