1. 程式人生 > >Python小程式

Python小程式

#coding=utf-8
import sys
----------Python2中輸入整數------------
N = input()  
---------Python2、3中輸入字元-----------
s = raw_input()
------------字串轉整數list--------------
A = list(map(int,s.strip().split(' ')))
A = [int(i) for i in s.split(' ')]
-------------初始化二維陣列------------
num = [[0 for i in range(N)] for i in range(N)]
-------  -輸出98.99%--------------
print("%.2f%%" % percent)
--------compare each char of two list-------
for x,y in zip(bin_str, raw_bin):
    if x == y:
        cnt += 1
    else:
        continue
-----------輸入成整型list--------------
line1 = list(map(int,sys.stdin.readline().strip().split(' ')))
time = []
for i in range(line1[0]):
    tmp = list(map(int,sys.stdin.readline().strip().split(' ')))
    time.append(tmp)
print(s.function(line1,time))
-------------所有子串---------------
def all_sub_string(a_string):
    if len(a_string) == 1:
        return [a_string]
    else:
        return list(accumulate(a_string)) + all_sub_string(a_string[1:])
--------判斷是否為素數----------
def  is_prime(n):
    for i in range(2,int(n**0.5)+1):
        if n%i==0 and n!=2:
            return False
    return True
cnt = 1
n = 3
num = [2]
while True:
    if is_prime(n):
        cnt += 1
        num.append(n)
        if cnt==20:
            break
    n += 2  #素數都是奇數
print(num)
-------------連續子序列的最大和----------------
#b[i]為以i位置結尾的連續子序列的最大值
#b[i]等於max(a[i]+b[i-1],a[i]) (注意因為一定要以i為結尾,所以並不是 max(a[i]+b[i-1],b[i-1]) )
def fun(a):
    n = len(a)
    b = [a[0]]
    index = [[0] for i in range(n)]
    for i in range(1,n):
        if b[i-1]+a[i]>a[i]:
            b.append(b[i-1]+a[i])
            index[i] = index[i-1]+[i]
        else:
            b.append(a[i])
            index[i] = [i]
        # print('b,index',b,index)
    return max(b),index[b.index(max(b))]    #返回的第一個值為最大和,第二個值為構成最大和的連續元素的下標
------------------非連續最大升序子序列的值-------------------
#b[i]為以i位置結尾的非連續最大升序子序列的值
#b[i]初始化為a[i]
#b[i]等於max(b[i],b[j]+a[i]),若存在a[j]<a[i] 
def maxsum(a):
    b = copy.deepcopy(a)
    for i in range(len(a)):
        for j in range(i):
            if a[j]<a[i] and b[i]<b[j]+a[i]:
                b[i] = b[j]+a[i]
    print(b)
    return max(b)
------------------最長連續數列,數字相連---------------------
def maxcontinue(a):
    n = len(a)
    lendict = {}
    maxx = 0
    for i in a:
        lendict[i] = 0
    # print(lendict)
    for i in a:
        # print('i',i)
        if lendict.get(i)==0:
            if i-1 in lendict:
                l = lendict[i-1]
            else:
                l = 0
            if i+1 in lendict:
                r = lendict[i+1]
            else:
                r = 0
            lendict[i] = r+l+1
            lendict[i-l] = r+l+1
            lendict[i+r] = r+l+1
            maxx = lendict[i] if lendict[i]>maxx else maxx
            # print('lendict:',lendict)
    # print(lendict)
    return maxx
num = [-3, 1, 2, 4, -5, -6, 3, -7, -4]
print(maxcontinue(num))
---------------------two_sum-------------------------
def twoSum(nums, target):
    mydict = {} #初始化一個空的字典
    indexlist = []
    for (index_i, value_i) in enumerate(nums):
        value_j = target - value_i
        if value_j not in mydict:
            mydict[value_i] = index_i
        else:
            index_j = mydict[value_j]
            indexlist.extend([index_j,index_i])
    return indexlist #放在這裡更合適,這樣如果有多個結果的話,不會發生錯誤

def twosum2(num,target):
    num2 = copy.deepcopy(num)
    num.sort()
    i,j = 0,len(num)-1
    while (num[i]+num[j]!=target):
        if num[i]+num[j]<target:
            i += 1
        else:
            j -= 1
    return num2.index(num[i]),num2.index(num[j])

print(twoSum([2,3,7,5,4,0,9],16))
print(twosum2([2,3,7,5,4,0,9],16))
-----------------------------------------