no.1:
輸入三個整數x,y,z,請把這三個數由小到大輸出。
程式分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,然後再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。
分析:我們可以直接運用python的sort函式對其進行排序,然後輸入
l =
for i in range(3):
x = int(input('integer:\n'))
l.sort()
print(l)
如果不用sort函式呢? 這裡採用了列表推導式+字串分片和氣泡排序
a = [int(i) for i in input("請輸入:").split()]
m = len(a)
while m!=1:
for i in range(m-1):
if a[i]>a[i+1]:
x = a[i]
a[i] = a[i+1]
a[i+1] = x
m -= 1
print(a)
一句話暴力操作:
print(sorted([int(input("enter a integer: ")) for x in range(3)]))
no.2
輸出斐波那契數列。
f0 = 0 (n=0)
f1 = 1 (n=1)
fn = f[n-1]+ f[n-2] ( n=>2)
分析:我們觀察斐波那契的遞推式,可以想到兩種方法,遞迴和迭代。
#迭代法:
deffib
(n):
a,b = 1,1
for i in range(n-1):
a,b = b,a+b
return a
print(fib(10))
#遞迴法:
deffib
(n):
if n==1
or n==2:
return
1return fib(n-1)+fib(n-2)
print(fib(10))
還可以使用斐波那契的數學公式:
# 輸出第n個數
n = int(raw_input("第幾個數: "))
# 斐波那契數列的通項公式
f =(1/(5**0.5))*(((1+(5**0.5))/2)**n - ((1-(5**0.5))/2)**n)
print
"第%d個數:"%n,int(f)
# 輸出前n個數列:
l=[1]
for i in range(1,n+1):
f=(1/(5**0.5))*(((1+(5**0.5))/2)**i - ((1-(5**0.5))/2)**i)
還可以使用生成器:
#斐波那契數列---使用生成器deffib
(max):
n,a,b = 0,0,1
while n < max:
yield b
a,b = b,a+b
n += 1
max = int(input('input max num :'))
for n in fib(max):
print(n)
leetcode每日兩題 Day1 簡單題2
3.無重複字元的最長子串 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入...
LeetCode每日兩題 day3
leetcode8.字串轉換整數 leetcode7.整數反轉 題目詳情 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 實現flag 1if x 0else 1 ...
LeetCode每日兩題 day4
leetcode11.盛水最多的容器 leetcode9.回文數 問題詳情 判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。實現class solution object defispalindrome self,x type x int rtype bool...