Python小程式
阿新 • • 發佈:2018-12-11
#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)) -----------------------------------------