Python第三週作業
1. 完美立方
【描述】
費馬大定理斷言:當整數n>2時,關於a,b,c的方程an=bn+cn沒有正整數解。該定理被提出後,歷經三百多年,經歷多人猜想辯證,最終在1995年被英國數學家安德魯·懷爾斯證明。當然,可以找到大於1的4個整數滿足完美立方等式:a3=b3+c3+d3(例如123=63+83+103)。編寫一個程式,對於任意給定的正整數N(N ≤100),尋找所有的四元組(a,b,c,d),滿足a3=b3+c3+d3,其中1<a,b,c,d≤N。
【輸入】
輸入一個正整數N(N<=100)
示例 1 :24
【輸出】
按照a的值從小到大,每行輸出一個完美立方等式,其中b,c,d按照非降序排列輸出。若兩個完美立方等式中a的值相同,則b的值小的先輸出;在b值相等的情況下,c值小的先輸出;在b,c都相等的情況下,d值小的先輸出。
示例 1 :
Cube = 6,Triple = (3,4,5)
Cube = 12,Triple = (6,8,10)
Cube = 18,Triple = (2,12,16)
Cube = 18,Triple = (9,12,15)
Cube = 19,Triple = (3,10,18)
Cube = 20,Triple = (7,14,17)
Cube = 24,Triple = (12,16,20)
【程式碼】
import math
n = eval(input())
for a in range(2,n+1):
for b in range(2,a):
for c in range(b,a):
for d in range(c,a):
if math.pow(a,3) == math.pow(b,3)+math.pow(c,3)+math.pow(d,3):
print("Cube=%d,Triple=(%d,%d,%d)" %(a,b,c,d))
【參考】
2. 雞兔同籠
【描述】
一個籠子裡面關了若干只雞和兔子(雞有2只腳,兔子有4只腳,沒有例外)。已經知道了籠子裡腳的總數為a,則籠子裡面至少有多少隻動物,至多有多少隻動物?
【輸入】
第1行輸入一個正整數n(n≤1000),表示測試資料的組數n,接下來n組測試資料每組一行,每行一個正整數a(a<32768)。提示: 輸入使用input(),不要增加額外的提示資訊 。
示例 1 :
2
3
20
【輸出】
輸出包含n行,每行對應一個輸入,包含兩個正整數,第一個是最少的動物數,第二個是最多的動物數,兩個正整數之間用一個空格分開。輸出包含n行,每行對應一個輸入,包含兩個正整數,第一個是最少的動物數,第二個是最多的動物數,兩個正整數之間用一個空格分開。 如果沒有滿足要求的答案,則輸出兩個0。
示例 1 :
0 0
5 10
【程式碼】
n = int(input())
for i in range(n):
a = int(input())
if a<32768:
xmin = a%4
xmax = a%2
if xmin==0 and xmax==0:
print("{:.0f} {:.0f}".format(a/4,a/2))
else:
print(0,0)
else:
print(0, 0)
3. 算24
【描述】
給出4個小於10的正整數,可以使用加、減、乘、除4種運算以及括號把4個數連線起來得到一個表示式。現在問題是,是否存在一種方式使得所得表示式的結果等於24。
這裡加、減、乘、除以及括號的運算結果和運算優先順序跟平常定義一致。
例如,對於5,5,5,1,可知5×(5-1/5)=24。又如,對於1,1,4,2無論如何都不能得到24
編寫函式計算兩點的歐式距離,並輸出(保留小數點後兩位)。
【輸入】
在程式碼中的輸入部分輸入4個小於10的正整數。輸入使用input(),不要增加額外的提示資訊。
示例 1 :
5
5
5
1
示例 2 :
1
1
1
1
【輸出】
對於每一組測試資料,輸出一行,如果可以得到24,輸出"YES"其演算法;否則“NO”。
示例 1 :
YES
((5-(1/5))*5)
示例 2 :
NO
【程式碼】
from itertools import permutations
a = int(input("請輸入第1個數字:"))
b = int(input("請輸入第2個數字:"))
c = int(input("請輸入第3個數字:"))
d = int(input("請輸入第4個數字:"))
list1 = [a, b, c, d]
p=[c for c in permutations(list1,4)] #對4個整數隨機排列的列表
symbols = ["+", "-", "*", "/"]
list2 =[] #算出24的排列組合的列表
flag=False
for n in p:
one,two,three,four=n #p中每個元素有4個整陣列成
for s1 in symbols:
for s2 in symbols:
for s3 in symbols:
if s1+s2+s3=="+++" or s1+s2+s3=="***":
express = [ "{0}{1}{2}{3}{4}{5}{6}".format(one,s1, two,s2,three,s3,four)] #全加或者乘時,括號已經沒有意義。
else:
express = [ "(({0}{1}{2}){3}{4}){5}{6}".format(one, s1, two, s2, three, s3, four),
"({0}{1}{2}){3}({4}{5}{6})".format(one, s1, two, s2, three, s3, four),
"(({0}{1}({2}{3}{4})){5}{6})".format(one, s1, two, s2, three, s3, four),
"{0}{1}(({2}{3}{4}){5}{6})".format(one, s1, two, s2, three, s3, four),
"{0}{1}({2}{3}({4}{5}{6}))".format(one, s1, two, s2, three, s3, four)]
for e in express:
try:
if eval(e) == 24:
list2.append(e)
flag=True
except ZeroDivisionError:
pass
list3=set(list2) #去除重複項
for c in list3:
print("YES"+" "+c)
if flag==False:
print("NO")
【參考】
https://www.cnblogs.com/Mindf/p/12571829.html
4. 溫度轉換異常處理
【描述】
溫度的刻畫有兩個不同體系:攝氏度(Celsius)和華氏度(Fabrenheit)。
請編寫程式將使用者輸入華氏度轉換為攝氏度,或將輸入的攝氏度轉換為華氏度。
轉換演算法如下:(C表示攝氏度、F表示華氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
(1) 輸入輸出的攝氏度採用大寫字母 C 或小寫字母 c 結尾,溫度可以是整數或小數,如:12.34C 指攝氏度 12.34 度;
(2) 輸入輸出的華氏度採用大寫字母 F 或小字字母 f 結尾,溫度可以是整數或小數,如:87.65F 指華氏度 87.65 度;
(3) 考慮異常輸入的問題,如輸入不合法則丟擲異常;
(4) 使用input()獲得測試用例輸入時,不要增加提示字串。
【輸入】
輸入一個帶單位的溫度
示例 1 :102F
示例 2 :102D
示例 3 :AC
示例 4 :102ff
【輸出】
輸入正常,輸出轉換後的溫度,保留小數點後2位小數。
當使用者輸入值末位不是“C、c、F、f”中的一個時,輸出"輸入錯誤,末位只能是’C’,‘c’,‘F’,‘f’"
當檢測到NameError錯誤時輸出’試圖訪問的變數名不存在’
當檢測到SyntaxError 錯誤時輸出’存在語法錯誤’
示例 1 :38.89C
示例 2 :輸入錯誤,末位只能是’C’,‘c’,‘F’,'f’
示例 3 :試圖訪問的變數名不存在
示例 4 :存在語法錯誤
【程式碼】
CtoF=input()
try:
if CtoF[-1] in ["c", "C"]:
f=1.8*eval(CtoF[0:-1])+32
print("{:.2f}F".format(f))
elif CtoF[-1] in ["f", "F"]:
c=(eval(CtoF[0:-1])-32)/1.8
print("{:.2f}C".format(c))
else:
print("輸入錯誤,末位只能是'C','c','F','f'")
except NameError:
print("試圖訪問的變數名不存在")
except SyntaxError:
print('存在語法錯誤')
5. a除以b
【描述】
計算a除以b,結果四捨五入,保留2位小數。
【輸入】
輸入包括兩行, 每行一個實數, b不能等於0
示例 1 :
5
0
示例 2 :
5
3
【輸出】
正常計算結果為一個實數,當使用者輸入b為0時輸出"除零錯誤"
示例 1 :除零錯誤
示例 2 :1.67
【程式碼】
a = float(input())
b = float(input())
if b == 0:
print("除零錯誤")
else:
print("{:.2f}".format(a/b))
6. 2的n次方
【描述】
計算2的n次方,n由使用者輸入
【輸入】
示例 1 :5
【輸出】
示例 1 :32
【程式碼】
print(2**eval(input()))
7. 階乘
【描述】
使用者輸入一個正整數,計算其階乘
【輸入】
示例 1 :5
【輸出】
示例 1 :120
【程式碼】
n = eval(input())
sum = 1
for i in range(1,n+1):
sum = sum * i
print(sum)
8. 階乘求和
【描述】
求1!+2!+3!+…的前n項的和,n從鍵盤輸入
【輸入】
示例 1 :5
【輸出】
示例 1 :153
【程式碼】
n = eval(input())
temp = 0
while n>=1:
sum = 1 #初始化sum為1準備做n與n-1的階乘
for i in range(1,n+1): #求n階乘
sum = sum * i #求n階乘
temp = temp + sum #臨時存放一個階乘
n=n-1 #做n-1的階乘
print(temp)
9. 表示式求值
【描述】
已知a,b,c的值分別為5,8和3,利用以下公式計算並輸出x的值。
【輸入】
無
【輸出】
-0.6
【程式碼】
import math as m
a,b,c = 5,8,3
x = (-b+m.sqrt(pow(b,2)-4*a*c))/(2*a)
print(x)
相關文章
- 第三週作業
- Javaweb第三週作業JavaWeb
- 第三週 作業3
- 第三週作業2
- 第三週 作業4
- 【團隊作業】第三週作業1
- Java第三週作業(3)Java
- 馬哥教育第三週作業
- 第三週作業(三):wc程式C程式
- 第七組【團隊作業】第三週作業4
- 第六組【團隊作業】第三週作業2
- 第六組【團隊作業】第三週作業4
- 第九組【團隊作業】第三週作業4
- 第一組【團隊作業】第三週作業2
- 第八組【團隊作業】第三週作業1
- 第八組【團隊作業】第三週作業3
- 第五組【團隊作業】第三週作業1
- 第三週作業(二):分析程式碼
- 厚基礎Linux——第三週作業Linux
- 計算機課程第三週作業計算機
- 團隊作業—第三週—設計類圖
- 團隊作業-第三週-設計類圖
- 第三組【團隊作業】第二週使用者調研作業2
- Python 第一週程式設計作業Python程式設計
- 第三週作業(一):安裝VS以及建立單元測試
- 第七週作業
- 第二週作業
- 第三次作業
- 第六組【團隊作業】第六週作業
- 第五組【團隊作業】第六週作業
- 第八組【團隊作業】第六週作業
- 第三組【團隊作業】第四周作業3
- 第三輪OOP作業總結OOP
- 第七週運維作業運維
- JAVA EE 第一週作業Java
- jsp第七週作業JS
- 第二週作業0414
- 第三週週二