輸入輸出
input() 輸入
Python3 中 input() 函數接受一個標准輸入數據,返回為 string 類型。以換行(\n)結束。
input([prompt])
- prompt: 提示信息。
split() 用於輸入
split() 做輸入處理,通過指定分隔符對字符串進行切片,默認為所有的空字符,包括空格、換行(\n)、制表符(\t)等。
str.split(str="", num=string.count(str))
- str:分隔符,默認為所有的空字符,包括空格、換行(\n)、制表符(\t)等。
- num:分割次數,默認為 \(-1\) ,即分隔所有。
逐個數據輸入
x = input().split() # 輸入兩個整數
a = int(x[0]) # 第一個整數
b = int(x[1]) # 第二個整數
數組輸入
x = input()
a = []
for i in x.split():
a.append(int(i)) # 注意數據類型轉換
strip() 輸入清理
Python strip() 方法用於移除字符串頭尾指定的字符(默認為空格或換行符)或字符序列。注意只能刪除開頭和結尾的字符,不能刪除中間部分的字符。
str.strip([chars])
- chars:移除字符串頭尾指定的字符序列。注意移除尾部字符序列時為反向,對稱刪除。
逐個數據輸入
a = int(input().strip())
print() 輸入
print(a)
如果不想換行:
print(a, end='str') # 輸出不換行,以 str 為分割
sort 排序
可以用 list 和 truple 實現 C/C++ 中結構體排序的功能。
lst = [('d', 2), ('a', 4), ('b', 3), ('c', 2)]
# 按照value排序
lst.sort(key=lambda k: k[1])
print(lst)
# 按照key排序
lst.sort(key=lambda k: k[0])
print(lst)
# 先按value排序再按key排序
lst.sort(key=lambda k: (k[1], k[0]))
print(lst)
"""輸出
[('d', 2), ('c', 2), ('b', 3), ('a', 4)]
[('a', 4), ('b', 3), ('c', 2), ('d', 2)]
[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
"""
更加復雜的需求。首先我們先建立如下 list :
lst = [{'level': 19, 'star': 36, 'time': 1},
{'level': 20, 'star': 40, 'time': 2},
{'level': 20, 'star': 40, 'time': 3},
{'level': 20, 'star': 40, 'time': 4},
{'level': 20, 'star': 40, 'time': 5},
{'level': 18, 'star': 40, 'time': 1}]
排序需求為:level 越大越靠前;level 相同,star 越大越靠前;level 和 star 相同,time 越小越靠前。
# 注意按照需求反向實現
# 先按time排序
lst.sort(key=lambda k: (k.get('time', 0)))
# 再按照level和star順序
# reverse=True表示反序排列,默認正序排列
lst.sort(key=lambda k: (k.get('level', 0), k.get('star', 0)), reverse=True)