有四個數字:一、二、三、4,能組成多少個互不相同且無重複數字的三位數?各是多少?html
可填在百位、十位、個位的數字都是一、二、三、4。組成全部的排列後再去掉不知足條件的排列。python
for i in range(1,5): for j in range(1,5): for k in range(1,5): if i!=j and j!=k and i!=k: print(i,j,k)
1 2 3 1 2 4 1 3 2 1 3 4 1 4 2 1 4 3 2 1 3 2 1 4 2 3 1 2 3 4 2 4 1 2 4 3 3 1 2 3 1 4 3 2 1 3 2 4 3 4 1 3 4 2 4 1 2 4 1 3 4 2 1 4 2 3 4 3 1 4 3 2
一個整數,它加上100和加上268後都是一個徹底平方數,請問該數是多少?git
在10000之內判斷,將該數i加上100後再開方,加上268後再開方,若是開方後的結果知足以下條件,便是結果。github
xx =(i+100)算法
yy=(i+268)編程
import math for i in range(1,10000): x=int(math.sqrt(i+100)) y=int(math.sqrt(i+268)) if (x*x==i+100)and(y*y==i+268): print(i)
21 261 1581
輸入某年某月某日,判斷這一天是這一年的第幾天?api
以3月5日爲例,應該先把前兩個月的加起來,而後再加上5天即本年的第幾天,特殊狀況,閏年且輸入月份大於2時需考慮多加一天。app
year=int(input("請輸入年份")) month=int(input("請輸入月份")) day=int(input("請輸入日期")) months=(0,31,59,90,120,151,181,212,243,273,304,334) if 0<month<=12: sum=months[month-1] else: print('輸入的月份有誤') sum+=day leap=0 if (year%400==0) or ((year%4==0) and (year%100!=0)): leap=1 if(leap==1)and(month>2): sum+=1 print("今天是第%d天"%sum)
請輸入年份2000 請輸入月份3 請輸入日期1 今天是第61天
輸入三個整數x,y,z,請把這三個數由小到大輸出。dom
能夠藉助列表的sort方法完成排序。首先將用戶輸入的整數存放在列表中,列表從小到大排序後,經過遍歷的方式輸出列表中的值便可。ide
x = int(input("請輸入進行比較的第1個數:")) y = int(input("請輸入進行比較的第2個數:")) z = int(input("請輸入進行比較的第3個數:")) list = [x, y, z] list.sort() for i in range(len(list)): print(list[i])
請輸入進行比較的第1個數:34 請輸入進行比較的第2個數:23 請輸入進行比較的第3個數:55 23 34 55
編寫一個程序,實現斐波那契數列。
斐波那契數列(Fibonacci sequence),又稱黃金分割數列,指的是這樣一個數列:0、一、一、二、三、五、八、1三、2一、3四、……。
在數學上,費波那契數列是以遞歸的方法來定義:
F0 = 0 (n=0)
F1 = 1 (n=1)
Fn = F[n-1]+ F[n-2](n=>2)
def fib(n): if n==1 or n==2: return 1 return fib(n-1)+fib(n-2) print(fib(10))
55
編寫程序,打印出全部的「水仙花數」 。
所謂「水仙花數」是指一個三位數,其各位數字立方和等於該數自己。例如:153是一個「水仙花數」,由於153=1的三次方+5的三次方+3的三次方。
for i in range(100,1000): a=int(i/100) b=int(i/10)%10 c=i%10 if i==a**3+b**3+c**3: print(i)
153 370 371 407
編寫一個程序,經過用戶輸入兩個數字,並計算這兩個數字之和。
根據程序描述,該程序實現過程大概分爲以下幾步:
num1 = input("請輸入第1個數字:") num2 = input("請輸入第2個數字:") sum = float(num1) + float(num2) print("數字%s和%s相加之和是%.1f" % (num1, num2, sum))
請輸入第1個數字:12.3 請輸入第2個數字:10.4 數字12.3和10.4相加之和是22.7
平方根,又叫二次方根,表示爲〔√ ̄〕,如:數學語言爲:√ ̄16=4。語言描述爲:根號下16=4。編寫一個程序,經過用戶輸入一個數字,並計算這個數字的平方根。
關於計算平方根的,可使用在指數運算符 ** 來計算改數的平方根,也可使用math函數中的sqrt,不一樣的是,指數**只適用於正數,而sqrt適用於任何數。接下來,按照下列步驟實現程序:
import math num = int(input("請輸入要計算平方根的數字:")) result = math.sqrt(num) print("數字%d的平方根是%f" % (num, result))
請輸入要計算平方根的數字:12 數字12的平方根是3.464102
編寫程序,經過使用 if...elif...else 語句判斷數字是正數、負數或零:
正數、負數或零的判斷很是簡單,只須要判斷這個數是否大於零,小於零或者等於零。因爲判斷的條件大於2個,這裏咱們使用if…elif…else判斷。
num = float(input("輸入一個數字: ")) if num > 0: print("正數") elif num == 0: print("零") else: print("負數")
輸入一個數字: -2 負數
若是一個n位正整數等於其各位數字的n次方之和,則稱該數爲阿姆斯特朗數。 例如1^3 + 5^3 + 3^3 = 153。
1000之內的阿姆斯特朗數: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。
請編寫程序,檢測用戶輸入的數字是否爲阿姆斯特朗數。
n位正整數等於其各位數字的n次方之和
# 獲取用戶輸入的數字 num = int(input("請輸入一個數字: ")) # 初始化變量 sum sum = 0 # 指數 n = len(str(num)) # 檢測 temp = num while temp > 0: digit = temp % 10 sum += digit ** n temp //= 10 # 輸出結果 if num == sum: print(num,"是阿姆斯特朗數") else: print(num,"不是阿姆斯特朗數")
請輸入一個數字: 12 12 不是阿姆斯特朗數 或者 請輸入一個數字: 153 153 是阿姆斯特朗數
素數(prime number)又稱質數,有無限個。除了1和它自己之外再也不被其餘的除數整除。請編寫一個程序,輸出指定範圍內的素數:
由程序描述可知,要想輸出指定範圍的素數,能夠按照下列步驟開發:
lower = int(input("輸入區間最小值: ")) upper = int(input("輸入區間最大值: ")) for num in range(lower,upper + 1): # 素數大於 1 if num > 1: for i in range(2,num): if (num % i) == 0: break else: print(num)
輸入區間最小值: 2 輸入區間最大值: 50 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
請編寫程序,用於生成指定日期的日曆。
Calendar模塊有很普遍的方法用來處理年曆和月曆,例如打印某月的月曆。
# 引入日曆模塊 import calendar # 輸入指定年月 yy = int(input("輸入年份: ")) mm = int(input("輸入月份: ")) # 顯示日曆 print(calendar.month(yy,mm))
輸入年份: 2017 輸入月份: 3 March 2017 Mo Tu We Th Fr Sa Su 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
輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
開發步驟以下:
str = input("請輸入一個字符串:") letters = 0 space = 0 digit = 0 others = 0 for c in str: if c.isalpha(): letters += 1 elif c.isspace(): space += 1 elif c.isdigit(): digit += 1 else: others += 1 print("字符串共有%d個英文字母,%d個空格,%d個數字,%d個其餘字符" % (letters, space, digit, others))
請輸入一個字符串:hello world,i love you! 字符串共有18個英文字母,3個空格,0個數字,2個其餘字符
從鍵盤輸入一個字符串,將小寫字母所有轉換成大寫字母,而後輸出到一個磁盤文件"test"中保存。
開發步驟以下:
fp = open('test.txt','w') string = input('please input a string:\n') string = string.upper() fp.write(string) fp = open('test.txt','r') print(fp.read()) fp.close()
please input a string:
Nice to meet you!
NICE TO MEET YOU!
編寫程序,用於實現十進制轉二進制、八進制、十六進制。
不一樣進制之間的轉換,須要用到下列方法:
# 獲取用戶輸入十進制數 dec = int(input("輸入數字:")) print("十進制數爲:", dec) print("轉換爲二進制爲:", bin(dec)) print("轉換爲八進制爲:", oct(dec)) print("轉換爲十六進制爲:", hex(dec))
輸入數字:123 十進制數爲: 123 轉換爲二進制爲: 0b1111011 轉換爲八進制爲: 0o173 轉換爲十六進制爲: 0x7b
請編寫一個程序,輸出生成10個兩位的隨機數,而且這兩個隨機數是素數。
Python的random模塊提供了隨機數生成方法random.randint(a,b),它返回一個大於等於a,小於等於b的隨機整數。
import random n = 0 while n < 10: x = random.randint(10, 99) # 得到兩位的隨機整數 # 判斷x是否爲素數 a = 2 while a < x - 1: if x % a == 0: break a += 1 else: print(x) # 若正常結束循環時,說明x是素數,輸出 n += 1 # 累計素數個數
61 29 83 41 73 97 19 11 31 17
經過用戶輸入三角形三邊長度,並計算三角形的面積。
要想計算三角形的面積,須要獲取三角形的三邊長度,假設三角形的三邊分別是a,b,c,那麼面積的計算方式以下:
三角形半周長s=(a+b+c)/2
三角形面積=(s*(s-a)*(s-b)*(s-c)) ** 0.5
a = float(input('輸入三角形第一邊長: ')) b = float(input('輸入三角形第二邊長: ')) c = float(input('輸入三角形第三邊長: ')) # 計算半周長 s = (a + b + c) / 2 # 計算面積 area = (s*(s-a)*(s-b)*(s-c)) ** 0.5 print('三角形面積爲 %0.2f' %area)
輸入三角形第一邊長: 12 輸入三角形第二邊長: 23 輸入三角形第三邊長: 21 三角形面積爲 125.22
如何將字符串轉換爲大寫字母,或者將字符串轉爲小寫字母等。
字符串str提供了不少轉換字母的方法,具體以下:
str = "www.runoob.com" print(str.upper()) # 把全部字符中的小寫字母轉換成大寫字母 print(str.lower()) # 把全部字符中的大寫字母轉換成小寫字母 print(str.capitalize()) # 把第一個字母轉化爲大寫字母,其他小寫 print(str.title()) # 把每一個單詞的第一個字母轉化爲大寫,其他小寫
WWW.RUNOOB.COM www.runoob.com Www.runoob.com Www.Runoob.Com
經過導入 datetime 模塊來獲取昨天的日期。
# 引入 datetime 模塊 import datetime def getYesterday(): today=datetime.date.today() oneday=datetime.timedelta(days=1) yesterday=today-oneday return yesterday # 輸出 print(getYesterday())
2018-08-02
編寫一個程序,將用戶輸入的兩個變量進行相互交換。要求不使用臨時變量實現。
與其餘語言不一樣,Python中的變量能夠經過下列方式進行賦值:
x,y = y,x
上述代碼的做用就是將x的值賦給y,將y的值賦給x,即x和y值的互換。
# 用戶輸入 x = input('輸入 x 值: ') y = input('輸入 y 值: ') # 不使用臨時變量 x,y = y,x print('交換後 x 的值爲: {}'.format(x)) print('交換後 y 的值爲: {}'.format(y))
輸入 x 值: 3 輸入 y 值: 4 交換後 x 的值爲: 4 交換後 y 的值爲: 3
一個大於1的天然數,除了1和它自己外,不能被其餘天然數(質數)整除(2, 3, 5, 7等),換句話說就是該數除了1和它自己之外再也不有其餘的因數。
# 用戶輸入數字 num = int(input("請輸入一個數字:")) # 質數大於1 if num > 1: # 查看因子 for i in range(2, num): if (num % i) == 0: print(num,"不是質數") break else: print(num,"是質數") # 若是輸入的數字小於或等於1,不是質數 else: print(num, "不是質數")
請輸入一個數字: 12
12 不是質數
編寫一個程序,實現簡單計算器實現,包括兩個數基本的加減乘除運算。
簡單計算器的開發流程以下:
打印菜單,提示用戶選擇要進行的運算
用戶選擇運算類型
接收用戶輸入的值,用於參與運算
輸出運算的結果
須要注意的是,因爲接受的用戶輸入是字符串,須要將字符串轉爲數值類型
# 定義函數 def add(x, y): """相加運算""" return x + y def subtract(x, y): """相減運算""" return x - y def multiply(x, y): """相乘運算""" return x * y def divide(x, y): """相除運算""" return x / y # 用戶輸入 print("請選擇運算:") print("一、相加") print("二、相減") print("三、相乘") print("四、相除") choice = input("請輸入你的選擇(1/2/3/4):") num1 = int(input("輸入第一個數字:")) num2 = int(input("請輸入第二個數字:")) if choice == "1": print(num1, "+", num2, "=", add(num1, num2)) elif choice == "2": print(num1, "-", num2, "=", subtract(num1, num2)) elif choice == "3": print(num1, "*", num2, "=", multiply(num1, num2)) elif choice == "4": print(num1,"/",num2,"=", divide(num1,num2)) else: print("非法輸入")
加法運算:
選擇運算:
一、相加
二、相減
三、相乘
四、相除
輸入你的選擇(1/2/3/4):1
輸入第一個數字: 2
輸入第二個數字: 3
2 + 3 = 5
減法運算:
選擇運算:
一、相加
二、相減
三、相乘
四、相除
輸入你的選擇(1/2/3/4):2
輸入第一個數字: 5
輸入第二個數字: 1
5 - 1 = 4
乘法運算:
選擇運算:
一、相加
二、相減
三、相乘
四、相除
輸入你的選擇(1/2/3/4):3
輸入第一個數字: 2
輸入第二個數字: 5
2 * 5 = 10
除法運算:
選擇運算:
一、相加
二、相減
三、相乘
四、相除
輸入你的選擇(1/2/3/4):4
輸入第一個數字: 10
輸入第二個數字: 2
10 / 2 = 5.0
編寫一個程序,計算兩個數的最大公約數。
# 定義一個函數 def hcf(x, y): """該函數返回兩個數的最大公約數""" # 獲取最小值 if x > y: smaller = y else: smaller = x for i in range(1, smaller + 1): if ((x % i == 0) and (y % i == 0)): hcf = i return hcf # 用戶輸入兩個數字 num1 = int(input("輸入第一個數字:")) num2 = int(input("輸入第二個數字:")) print(num1, "和", num2, "的最大公約數爲", hcf(num1, num2))
輸入第一個數字: 12
輸入第二個數字: 3
12 和 3 的最大公約數爲 3
編寫一個程序,計算兩個數的最小公倍數。
# 【程序描述】 # 編寫一個程序,計算兩個數的最小公倍數。 # 定義函數 def lcm(x, y): # 獲取最大的數 if x > y: greater = x else: greater = y while (True): if ((greater % x == 0) and (greater % y == 0)): lcm = greater break greater += 1 return lcm # 獲取用戶輸入 num1 = int(input("輸入第一個數字:")) num2 = int(input("輸入第二個數字:")) print(num1, "和", num2, "的最小公倍數爲", lcm(num1, num2))
輸入第一個數字: 12
輸入第二個數字: 2
12 和 2 的最小公倍數爲 12
編寫一個程序,演示Python字符串中和判斷有關的方法的使用。
字符串中常見的判斷操做的方法以下所示:
print("示例1:") str = "www.github.com" # 判斷全部字符都是數字或者字母 print(str.isalnum()) # 判斷全部字符都是數字 print(str.isalpha()) # 判斷全部字符都是數字 print(str.isdigit()) # 判斷全部字符都是小寫 print(str.islower()) # 判斷全部字符都是大寫 print(str.isupper()) # 判斷全部單詞都是首字母大寫,像標題 print(str.istitle()) # 判斷全部字符都是空白字符- \t ,\n , \r print(str.isspace()) print("---------") print("\n") print("---------") print("示例2:") str = "oschina " print(str.isalnum()) print(str.isalpha()) print(str.isdigit()) print(str.islower()) print(str.isupper()) print(str.istitle()) print(str.isspace())
示例1:
False
False
False
True
False
False
False
---------
---------
示例2:
False
False
False
True
False
False
False
有兩個磁盤文件A和B,各存放一行字母,要求把這兩個文件中的信息合併(按字母順序排列), 輸出到一個新文件C中。
fp = open("file1.txt") r1 = fp.read() fp.close() fp = open("file2.txt") r2 = fp.read() fp.close() fp = open("file3.txt", "w") merge = list(r1 + r2) merge.sort() s = "" s = s.join(merge) fp.write(s) fp.close()
假設file1.txt文件中存放的是hello,file2.txt文件中存放的是world,那麼程序運行後,file3.txt文件中的數據是:dehllloorw
編寫一個猜數遊戲,該遊戲會隨機產生一個數字,用戶能夠隨意輸入一個數進行比較,在比較過程當中,會不斷提示用戶輸入的數是大了仍是小了,直到用戶輸入的數等於隨機數,程序終止。
import time import random play_it = input("Do you want to play it.(\'y\'or\'n\')") while play_it == "y": c = input("input a character.\n") i = random.randint(0, 2 ** 32) % 100 print("Please input number you guess:\n") start = time.clock() # Python time clock() 函數以浮點數計算的秒數返回當前的CPU時間。用來衡量不一樣程序的耗時,比time.time()更有用 a = time.time() guess = int(input("input your guess:\n")) while guess != i: if guess > i: print("Please input a little smaller") guess = int(input("input your guess:\n")) else: print("Please input a little bigger.") guess = int(input("input your guess:\n")) end = time.clock() b = time.time() var = (end - start) / 18.2 print(var) if var < 15: print("you are very clever!") elif var < 25: print("you are normal!") else: print("you are stuplid!") print("Congradulations") print("The number you guess id %d" % i) play_it = input("do you want to play it.")
do you want to play it.('y' or 'n')y
input a character:
5
please input number you guess:
input your guess:
60
……
please input a little bigger
input your guess:
29
please input a little smaller
input your guess:
28
3.81868131868e-05
you are very clever!
Congradulations
The number you guess is 28
do you want to play it.
某個公司採用公用電話傳遞數據,數據是四位的整數,在傳遞過程當中是加密的,加密規則以下:每位數字都加上5,而後用和除以10的餘數代替該數字,再將第一位和第四位交換,第二位和第三位交換。
from sys import stdout a = int(input("input a number:\n")) aa = [] aa.append(a % 10) aa.append(a % 100 / 10) aa.append(a % 1000 / 100) aa.append(a / 1000) for i in range(4): aa[i] += 5 aa[i] %= 10 for i in range(2): aa[i], aa[3 - i] = aa[3 - i], aa[i] for i in range(3, -1, -1): stdout.write(str(aa[i]))
input a number:
12
76.25.125.012
編寫程序,求輸入數字的平方,若是平方運算後小於 50 則退出。
TRUE = 1 FALSE = 0 def SQ(x): return x * x print("若是輸入的數字小於50,程序將中止運行。") again = 1 while again: num = int(input("Please input number.")) print("運算結果爲 %d" %(SQ(num))) num = SQ(num) if num >= 50: again = TRUE else: again = FALSE
若是輸入的數字小於 50,程序將中止運行。
Please input number12
運算結果爲 144
Please input number12
運算結果爲 144
Please input number3
運算結果爲 9
編寫一個程序,計算0—7所能組成的奇數個數。
# 規律:這是規律:個位數一、三、五、7:是4個十位數是7*4:28個(十一、13...77)百位數是:7*4*8:224個7*4*8*8 sum = 4 s = 4 for j in range(2, 9): print(sum) if j <= 2: s *= 7 else: s *= 8 sum += s print("sum = %d" % sum)
4
32
256
2048
16384
131072
1048576
sum = 8388608
809*??=800*??+9*??+1 其中??表明的兩位數,8*??的結果爲兩位數,9*??的結果爲3位數。求??表明的兩位數,及809*??後的結果。
a = 809 for i in range(10, 100): b = i * a + 1 if b >= 1000 and b <= 10000 and 8 * i < 100 and 9 * i >= 100: print(b, "/", i, "= 809 * ", i, " + ", b % i)
9709 / 12 = 809 * 12 + 1
海灘上有一堆桃子,五隻猴子來分。第一隻猴子把這堆桃子平均分爲五份,多了一個,這隻猴子把多的一個扔入海中,拿走了一份。第二隻猴子把剩下的桃子又平均分紅五份,又多了一個,它一樣把多的一個扔入海中,拿走了一份,第3、第4、第五隻猴子都是這樣作的,問海灘上原來最少有多少個桃子?
i = 0 j = 1 x = 0 while (i < 5): x = 4 * j for i in range(0, 5): if (x % 4 != 0): break else: i += 1 x = (x / 4) * 5 + 1 j += 1 print(x)
3121.0
有n我的圍成一圈,順序排號。從第一我的開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來第幾號的那位。
nmax = 50 n = int(input("請輸入總人數:")) num = [] for i in range(n): num.append(i + 1) i = 0 k = 0 m = 0 while m < n - 1: if num[i] != 0: k += 1 if k == 3: num[i] = 0 k = 0 m += 1 i += 1 if i == n: i = 0 i = 0 while num[i] == 0: i += 1 print(num[i])
請輸入總人數:23
8
編寫一個程序,用於對一個數進行分解質因子。
n = int(input("Please input n:")) result = [] i = 2 str1 = str(n) + "=" while n > 1: if n % i == 0: n /= i result.append(str(i)) i -= 1 i += 1 # Python join() 方法用於將序列中的元素以指定的字符鏈接生成一個新的字符串。 str1 += "*".join(result) print(str1)
please input n:16
16=2*2*2*2
編寫程序,取一個整數a從右端開始的4〜7位。
能夠這樣考慮:
(1)先使a右移4位。
(2)設置一個低4位全爲1,其他全爲0的數。可用~(~0<<4)
(3)將上面兩者進行&運算。
a = int(input("input a number:\n")) b = a >> 4 c = ~(~0 << 4) d = b & c print("%o\t%o" % (a, d))
input a number:
9
11 0
用戶輸入一個4位的整數,若是是迴文數顯示True,若是不是迴文數顯示False。
迴文數,就是反過來的數字和正着的數字是相同的,如1221,倒過來的數仍是1221,這就是一個迴文數,1234倒過來是4321,不相等,就不是迴文數。
一個四位數abcd能夠寫爲I1=a*1000+b*100+c*10+d
那麼倒過來的數就能夠寫成I2=d*1000+c*100+b*10+a
若是I1和I2相等,那麼這就是一個迴文數。I1==I2的結果就是True,不然就是False。
一個四位數I1,分離各位數字的方法是:
千位:I1/1000
百位:I1/100%10
十位:I1/10%10
個位:I1%10
所以,判斷迴文數,若是使用a、b、c、d表示整數I1的千位、百位、十位、個位,開發步驟以下:
I1 = int(input("請輸入一個四位數:")) a = int(I1 / 1000) b = int(I1 / 100 % 10) c = int(I1 / 10 % 10) d = int(I1 % 10) I2 = d * 1000 + c * 100 + b * 10 + a if I1 == I2: print("True") else: print("False")
例如,輸入1221,結果輸出True
請輸入一個四位數:1221
True
輸入1234,結果輸出False
請輸入一個四位數:1234
False
古代有一個梵塔,塔內有A、B、C三個基座,A座上有64個盤子,盤子大小不等,大的在下,小的在上。有人想把這64個盤子從A座移到C座,但每次只容許移動一個盤子,而且在移動的過程當中,3個基座上的盤子始終保持大盤在下,小盤在上。在移動過程當中盤子能夠放在任何一個基座上,不容許放在別處。編寫程序,用戶輸入盤子的個數,顯示移動的過程。
假定盤子從大到小依次編號爲:盤一、盤二、…
上述思路能夠一直擴展下去,根據以上的分析,能夠寫出下面的遞歸表達:
將一個盤子從A移動到C
藉助C將n-1個盤子從A移動到B
將一個盤子從A移動到C n>1
藉助A將n-1個盤子從B移動到C
藉助B將n個盤子從A移動到C
爲了編寫一個遞歸函數實現「藉助B將n個盤子從A移到C」,比較等式左右兩邊類似操做,會發現:
所以,遞歸函數共有盤子數、起始位置、藉助位置和最終位置4個變量,所以函數有4個可變參數。假定函數的參數一次爲盤子數、初始位置、藉助位置和最終位置,則可寫出下面函數。
def Hanoi(n, ch1, ch2, ch3): if n == 1: print(ch1, "->", ch3) else: Hanoi(n - 1, ch1, ch3, ch2) print(ch1, "->", ch3) Hanoi(n - 1, ch2, ch1, ch3) N = int(input("請輸入盤子的數量:")) Hanoi(N, 'A', 'B', 'C')
請輸入盤子的數量:4
A -> B
A -> C
B -> C
A -> B
C -> A
C -> B
A -> B
A -> C
B -> C
B -> A
C -> A
B -> C
A -> B
A -> C
B -> C
用戶輸入一個年份,若是是閏年輸出True,若是不是,輸出False。
判斷閏年的規則以下:
在上述兩個規則中,只要有一條規則成立,則年份爲閏年。
year = int(input("輸入一個年份: ")) if (year % 4) == 0: if (year % 100) == 0: if (year % 400) == 0: print("{0} 是閏年".format(year)) # 整百年能被400整除的是閏年 else: print("{0} 不是閏年".format(year)) else: print("{0} 是閏年".format(year)) # 非整百年能被4整除的爲閏年 else: print("{0} 不是閏年".format(year))
輸入一個年份: 2018
2018 不是閏年
用戶輸入位數n,找出並顯示出全部n位的自冪數。
自冪數是指一個n位正整數,若是它的各位數字的n次方的和加起來等於這個數,數學家稱這樣的數爲自冪數。例如,13+53+33=153,153就是一個3位的自冪數,3位自冪數也稱爲水仙花數。本程序設n的數值爲1~6,當n大於6時,程序退出。
import math n = int(input("請輸入自冪數位數:\n")) while n != -1: if n == 1: print("獨身數:") print("0\t") elif n == 2: print("兩位自冪數:") print("沒有自冪數!") elif n == 3: print("水仙花數:") elif n == 4: print("玫瑰花數:") elif n == 5: print("五角星數:") elif n == 6: print("六合數:") elif n == 7: print("北斗七星數:") elif n == 8: print("八仙數:") elif n == 9: print("九九重陽數:") elif n == 10: print("十全十美數:") else: print("其它自冪數:") # 定義一數字,從10^(n-1)開始自加,到10^n結束 for i in range(int(math.pow(10, n - 1)), int(math.pow(10, n))): num = 0 for j in str(i): num += int(math.pow(int(j), n)) if i == num: print(i) n = int(input('請選擇自冪數的位數(退出程序請輸入:-1):')) else: print("輸入'-1'程序結束。")
請輸入自冪數位數:
3
水仙花數:
153
370
371
407
請選擇自冪數的位數(退出程序請輸入:-1):1
獨身數:
0
1
2
3
4
5
6
7
8
9
請選擇自冪數的位數(退出程序請輸入:-1):4
玫瑰花數:
1634
8208
9474
請選擇自冪數的位數(退出程序請輸入:-1):2
兩位自冪數:
沒有自冪數!
請選擇自冪數的位數(退出程序請輸入:-1):-1
輸入'-1'程序結束。
在現實生活中,常常須要處理多維數據,好比,二維矩陣,三維矩陣等。在Python中能夠用嵌套列表來表示多維數據,好比,下面的一個列表表示的是3*3的二維數據。
M=[[1,2,3],[‘a’,’b’,’c’],[7,8,9]]
顯然這種嵌套列表與一般意義的矩陣有所不一樣,主要不一樣表如今如下兩個方面。
儘管如此,使用嵌套列表表示多維矩陣依然是Python語句中的常見用法,好比列表N=[[1,2,3],[4,5,6],[7,8,9]]表示下面矩陣。
123
456
789
而對於第(i,j)位置的訪問使用N[i][j]便可。
若是要經過鍵盤輸入數據來初始化一個2*2的矩陣,可使用下面的語句。
【程序分析】
a = [] for i in range(2): a.append([]) for j in range(2): v = int(input("請輸入元素:")) a[i].append(v) print(a)
請輸入元素:1
請輸入元素:2
請輸入元素:2
請輸入元素:3
[[1, 2], [2, 3]]
哥德巴赫猜測說是說,任何一個超過2的偶數均可以寫成兩個素數之和,例如,4=2+2,8=5+3等。本例要求根據用戶輸入的偶數找出其素數和的分解形式
一個簡單的方法的,對於輸入的偶數N,找出其全部分解,逐一驗證每個知足N=k1+k2的分解中k1和k2是否都是素數。好比對於數字12,驗證分解(2,10),(3,9)、(4,8)、(五、7)、(6,6)中有沒有兩個數都是素數的情形。若是有,哥德巴赫猜測該數就是成立的。這種算法對於只驗證一個數字N的全部分解的情形是合適的。但對於須要驗證多個偶數N的情形效率欠佳。好比須要驗證十、十二、16三個數,它們有分解5+五、5+七、5+11,這樣驗證這幾個分解時就要判斷5是否是素數,重複的運算會不少。
本案例採用另外一種思路,首先創建一個素數表,該素數表要足夠長,能夠覆蓋偶數N全部分解中可能遇到的素數。然後考察N的每一個分解,看看分解出來的兩個數是否都包含在素數表中,如果,則找到一種素數分解。
def main(): # 輸入待驗證的偶數 N = int(input("請輸入待驗證的偶數:")) while N < 3 or N % 2 == 1: print("輸入的數不符合要求") N = int(input("請輸入待驗證的偶數n (n>2):")) # 生成素數表 Prime = set() for i in range(2, N + 1): Prime.add(i) for i in range(2, N + 1): if i in Prime: for k in range(2 * i, N + 1, i): if k in Prime: Prime.remove(k) # 驗證該偶數可否分解爲兩個素數之和 for e in Prime: f = N - e if f >= e and f in Prime: print(N, '=', e, '+', f) main()
請輸入待驗證的偶數:12
12 = 5 + 7
編寫程序,解一元二次方程 ax2+bx+c=0。
from math import * print("本程序求 ax^2+bx+c=0 的根") a = float(input("請輸入 a:")) b = float(input("請輸入 b:")) c = float(input("請輸入 c:")) delta = b * b - 4 * a * c if (delta >= 0): delta = sqrt(delta) x1 = (-b + delta) / (2 * a) x2 = (-b - delta) / (2 * a) print("兩個實根分別爲:", x1, x2) else: print("沒有實根")
本程序求 ax^2+bx+c=0 的根
請輸入 a:12
請輸入 b:23
請輸入 c:21
沒有實根
或
本程序求 ax^2+bx+c=0 的根
請輸入 a:2
請輸入 b:-8
請輸入 c:2
兩個實根分別爲: 3.732050807568877 0.2679491924311228
輸入兩個整數,打印它們相除以後的結果。對輸入的不是整數或除數爲零,進行異常處理。
在對兩個整數相除過程當中,若是遇到輸入的不是整數或者除數爲零,那麼程序會終止,再也不執行其餘語句,這就是出現了異常。系統自動的處理就是中止執行,給出提示,爲了執行這種狀況,不讓程序結束,能夠將會出現異常的代碼寫在try中,讓except按照異常類名處理異常。
k = 0 while (k < 3): try: x = int(input('請輸入第一個整數:')) y = int(input('請輸入第二個整數:')) print('x/y=', x / y) except ValueError: print('請輸入一個整數。') except ZeroDivisionError: print('除數不能爲零。') k = k + 1
請輸入第一個整數:12
請輸入第二個整數:23
x/y= 0.5217391304347826
有若干成績,統計及格人的平均成績。
有若干成績,其中有不及格的,如今要統計及格的這些人的平均成績,可使用循環先求和,但遇到不及格的,不加入其中,最後除以及格的人數,假設成績存儲在一個列表中。
x = [98, 72, 80, 45, 30, 89, 92, 54, 48, 82, 67, 76] sum = 0 k = 0; for item in x: if (item < 60): continue sum = sum + item k = k + 1; if (k != 0): print("及格人數", k, "人,平均成績是", sum / k)
及格人數 8 人,平均成績是 82.0
輸入直角三角形的兩個直角邊長度a、b,求斜邊c的長度。
數學公式 c=a2+b2
在Python中,乘法使用「*」號表示,如a*a就是a的平方。
除此以外,還有開方根的運算,能夠經過Python中math模塊內置的函數來實現,爲此,咱們能夠在程序中使用import導入math模塊,而後調用開方的函數sqrt實現。
from math import * a = float(input("請輸入斜邊 1 的長度")) # 輸入實數 b = float(input("請輸入斜邊 2 的長度")) # 輸入實數 c = a * a + b * b # 計算,獲得的是斜邊的平方 c = sqrt(c) # 開方,獲得的是斜邊長 print("斜邊長爲:", c) # 顯示,一項是字符串,一項是 c 表示的斜邊長
請輸入斜邊 1 的長度3
請輸入斜邊 2 的長度4
斜邊長爲: 5.0
有5我的坐在一塊兒,問第五我的多少歲?他說比第4我的大2歲。問第4我的歲數,他說比第3我的大2歲。問第三我的,又說比第2人大兩歲。問第2我的,說比第一我的大兩歲。最後問第一我的,他說是10歲。請問第五我的多大?
題目很是符合遞歸函數的過程,因此本題採用遞歸函數完成。
函數把問到的第幾我的做爲參數i,當i的值爲1時,函數返回10,其它狀況均爲第i-1人年齡的基礎上加2.
def fun(i):
if i==1:
return 10
return fun(i-1)+2
print(fun(5))
18
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加由鍵盤控制。
根據用戶輸入的個數(長度)決定循環的次數。
區分每次循環輸出的內容,只要是最後一次循環,就直接輸出最終的結果,其他皆爲本次結果跟上加號。
先從個位的數字開始計算,每執行一次循環就把上次的結果數乘以10,使得每次的結果爲30、330、3330,而後再加上個位的基本數字就行。
def test(): basis = int(input("輸入一個基本的數字")) n = int(input("輸入數字的長度")) b = basis sum = 0 for i in range(0, n): if i == n - 1: print("%d" % (basis)) else: print("%d +" % (basis)) sum += basis basis = basis * 10 + b print("= %d" % (sum)) test()
【程序結果】
輸入一個基本的數字:3
輸入數字的長度:4
3 +
33 +
333 +
3333
= 3702
一個數若是剛好等於它的因子之和,這個數就稱爲「完數」。例如6=1+2+3.編程找出1000之內的全部完數。
提示:藉助math模塊的sqrt函數(求平方根)
from math import sqrt n = int(input("輸入一個數字:")) sum = n * -1 k = int(sqrt(n)) for i in range(1, k + 1): if n % i == 0: sum += n / i sum += i if sum == n: print("YES") else: print("NO")
輸入一個數字:6
YES
定義公民類,實例成員變量有身份證號、姓名、年齡和性別。定義公民類的派生類:學生類和教師類。學生類增長實例成員變量學號、班級和分數;教師類增長實例變量工號、系別和工資。編寫主程序, 定義類的對象,設置對象的實例屬性,顯示對象的信息。
使用super()方法調用父類的構造方法。
class Citizen: def __init__(self, id, name, age, sex): self.id = id self.name = name self.age = age self.sex = sex class Student(Citizen): def __init__(self, id, name, age, sex, stdno, grade, score): super(Student, self).__init__(id, name, age, sex) self.stdno = stdno self.grade = grade self.score = score class Teacher(Citizen): def __init__(self, id, name, age, sex, thno, dept, salary): super(Teacher, self).__init__(id, name, age, sex) self.thno = thno self.dept = dept self.salary = salary # 主程序 c = Citizen('101', 'zhang', 20, 'female') print(c.id, c.name, c.age, c.sex) s = Student('102', 'wang', 30, 'male', 1221, 'computer12', 630) print(s.id, s.name, s.age, s.sex, end=" ") print(s.stdno, s.grade, s.score) t = Teacher('103', 'li', 36, 'male', 356, 'eie', 4500) print(t.id, t.name, t.age, t.sex, end=" ") print(t.thno, t.dept, t.salary)
101 zhang 20 female
102 wang 30 male 1221 computer12 630
103 li 36 male 356 eie 4500
定義一個複數類,包括實部和虛部成員變量、構造方法、以及兩個複數的加法、乘法和比 較大小運算符定義。
class Complex: def __init__(self, r, i): self.real = r self.imag = i def __add__(self, c): return Complex(self.real + c.real, self.imag + c.imag) def __mul__(self, c): return Complex(self.real * c.real - self.imag * c.imag, self.real * c.imag + self.imag * c.real) def __gt__(self, c): if self.real > c.real: return True elif self.real < c.real: return False elif self.imag > c.imag: return True else: return False def show(self): print(self.real, "+", self.imag, "j") # 主函數 c1 = Complex(3, 4) c2 = Complex(6, -7) (c1 + c2).show() (c1 * c2).show() print(c1 > c2)
9 + -3 j
46 + 3 j
False