python涉及的函数 python的基础数据结构有:列表、元组、序列、集合、字典等 Python的输入输出包括了从控制台上获取的数据以及链表、栈、树等自输入的设计
map()函数会根据提供的函数对指定序列做映射,返回一个迭代器 map(function, iterable, …)
function 函数
iterable 一个或多个序列
input()函数接受一个标准输入数据,返回为 string 类型 input([prompt])
list()方法用于将元组或字符串转换为列表,返回列表 list(seq)
join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串,返回通过指定字符连接序列中元素后生成的新字符串 str.join(sequence)
测试用例如果以行的形式输入 list(map(int,input().split()))
有可能会出现EOF的错误,为了避免这个错误的出现,需要将输入套上try…except…异常检测
具体的题目练习 其中的a+b和字符串的输入输出问题的来源是牛客网
a+b(1) 输入描述: 输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据包括多组。 输入格式: 1 5 10 20 输出格式: 6 30
import sysfor line in sys.stdin: a = line.split() print(int(a[0 ]) + int(a[1 ]))
while True : try : a = list(map(int,input().split(' ' ))) except : break print(a[0 ]+a[1 ])
a+b(2) 输入描述: 输入第一行包括一个数据组数t(1 <= t <= 100) 接下来每行包括两个正整数a,b(1 <= a, b <= 10^9)
while True : try : t = int(input()) for i in range(t): nums = list(map(int, input().split(' ' ))) print(nums[0 ]+nums[1 ]) except : break
while True : try : t = int(input()) for i in range(t): a,b = map(int, input().split(' ' )) print(a+b) except : break
a+b(3) 输入描述:输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据有多组, 如果输入为0 0则结束输入
输入格式: 1 5 10 20 0 0
while True : try : a,b = map(int, input().split()) if a == b == 0 : break print(a+b) except : break
a+b(4) 输入描述: 输入数据包括多组。 每组数据一行,每行的第一个整数为整数的个数n(1 <= n <= 100), n为0的时候结束输入。 接下来n个正整数,即需要求和的每个正整数。
输入格式: 4 1 2 3 4 5 1 2 3 4 5 0
while True : try : nums = list(map(int, input().split())) if nums[0 ] == 0 : break else : print(sum(nums[1 :])) except : break
a+b(5) 输入描述: 输入的第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。 接下来t行, 每行一组数据。 每行的第一个整数为整数的个数n(1 <= n <= 100)。 接下来n个正整数, 即需要求和的每个正整数。
while True : try : n = int(input()) for _ in range(n): nums = list(map(int, input().split())) print(sum(nums[1 :])) except : break
a+b(6) 输入描述: 输入数据有多组, 每行表示一组输入数据。 每行的第一个整数为整数的个数n(1 <= n <= 100)。 接下来n个正整数, 即需要求和的每个正整数。
while True : try : nums = list(map(int, input().split())) except : break n = nums[0 ] sumvalue = 0 for i in range(1 ,n+1 ): sumvalue += nums[i] print(sumvalue)
a+b(7) 输入描述: 输入数据有多组, 每行表示一组输入数据。 每行不定有n个整数,空格隔开。(1 <= n <= 100)。
while True : try : nums = list(map(int, input().split())) except : break sumValue = 0 for _ in nums: sumValue += _ print(sumValue)
字符串排序(1) 输入描述: 输入有两行,第一行n 第二行是n个空格隔开的字符串
输出描述: 输出一行排序后的字符串,空格隔开,无结尾空格
输入: 5 c d a bb e
输出: a bb c d e
while True : try : n = int(input()) arr = input().split(' ' ) except : break arr = sorted(arr) out = ' ' .join(arr) print(out)
字符串排序(2) 输入描述: 多个测试用例,每个测试用例一行。 每行通过空格隔开,有n个字符,n<100 输出描述: 对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开
while True : try : arr = input().split(' ' ) except : break arr = sorted(arr) out = ' ' .join(arr) print(out)
字符串排序(3) 输入描述: 多个测试用例,每个测试用例一行。 每行通过,隔开,有n个字符,n<100 输出描述: 对于每组用例输出一行排序后的字符串,用’,’隔开,无结尾空格
while True : try : arr = input().split(',' ) except : break arr = sorted(arr) out = ',' .join(arr) print(out)
自测本地提交为0 输入描述: 输入有多组测试用例,每组空格隔开两个整数 输出描述: 对于每组数据输出一行两个整数的和
while True : try : a,b = map(int,input().split(' ' )) except : break print(a+b)
链表 class ListNode : def __init__ (self,val) : self.val = val self.next = None class LinkList : def __init__ (self) : self.head = None def initList (self,data) : self.head = ListNode(data[0 ]) start = self.head p = self.head for i in data[1 :]: node = ListNode(i) p.next = node p = p.next return start def printList (self,head) : if head == None : return node = head while node != None : if node.next: print(node.val, end='-->' ) else : print(node.val, end='' ) node = node.next if __name__ == "__main__" : l = LinkList() data1 = [1 ,2 ,3 ,4 ] data2 = [3 ,4 ,5 ,6 ] l1 = l.initList(data1) l2 = l.initList(data2) l.printList(l1) print("\r" ) l.printList(l2) print("\r" )
栈 (后进先出) 使用顺序表实现栈
class Stack : def __init__ (self) : self.stack = [] def empty (self) : return len(self.stack) == 0 def length (self) : return len(self.stack) def push (self,item) : self.stack.append(item) def pop (self) : if self.empty(): return None return self.stack.pop() def top (self) : if self.empty(): return None return self.stack[-1 ] if __name__ == "__main__" : stack = Stack() stack.push(1 ) stack.push(2 ) stack.push(3 ) stack.push(4 ) print(stack.pop()) print(stack.top()) print(stack.length())
堆