牛客网刷题必备-输入输出(python)

牛客网输入输出python写法

  • 一行输入 -> 分开的变量
    • 直接接收输入
    • 使用eval()
  • 一行输入 -> 一个列表
  • 多行输入(行数已知)
  • 多行输入(行数未知)
  • python格式化输出
    • 使用%
    • 使用format

一行输入 -> 分开的变量

直接接收输入

# 将输入分别存储到不同变量当中
# 只有一个输入直接转化类型即可
# a = int(input())

# 输入为整数
# 使用map函数将每个值强制转化为int型,保证数据类型不出错
# 输入的分隔符不同,split参数不同,默认为空格
a, b = map(int, input().split())
print('a:{}, type:{}'.format(a, type(a)))
print('b:{}, type:{}'.format(b, type(b)))

输出:
a:10, type:
b:20, type:

# 输入为字符串,不需要map
# input()返回类型即为字符串
c, d = input().split()
print('c:{}, type:{}'.format(c, type(c)))
print('d:{}, type:{}'.format(d, type(d)))

输出:
c:10, type:
d:20, type:

使用eval()

eval()函数用于执行一个字符串表达式

# 两个变量中间用 逗号 分隔
e, f = eval(input())
print('e:{}, type:{}'.format(e, type(e)))
print('f:{}, type:{}'.format(f, type(f)))

输出:
e:10, type:
f:20, type:

一行输入 -> 一个列表

# 输入为整数,将分开的变量放入list中
l1 = list(map(int, input().split()))
print(l1)

输出:
[1, 2, 3, 4, 5]

# 输入为字符串,直接将结果放入list中
l2 = list(input().split())
print(l2)

输出:
[‘ab’, ‘ef’, ‘gh’]

多行输入(行数已知)

# 第一行输入为行数,表示接下来有 n 行输入(或者直接已知不用输入)
# 输入可以是一行一行处理,也可以直接输出成矩阵
n = int(input())
data = []
for _ in range(n):
    s = input()
    if s != '':
        tmp = [j for j in s.split()]
        #data.append(tmp[0])
        data.append(tmp)
    else:
        break
print(data)

输出:
[[‘a’, ‘b’, ‘c’], [‘e’, ‘d’, ‘f’], [‘g’, ‘h’, ‘j’]]

import sys
# 第一行输入为行数,表示接下来有 n 行输入
n = int(input())
data = []
while True:
    line = sys.stdin.readline().strip()
    if not line:
        break
    data.append(line)
print(data)

多行输入(行数未知)

data = []
while True:
    try:
        s = input()
        data.append(list(map(str, input().split(' '))))
    except:
        break
print(data)

python格式化输出

使用%

使用%输出不同进制

  • %o:oct八进制
  • %d:dec十进制
  • %x:hex十六进制

使用 % 保留小数

  • %f:默认保留小数点后六位有效数字
    • %.3f :保留三位小数位
  • %e:保留小数点后六位有效数字,科学计数法
  • %g:在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法

尽量不使用round()取整,round()函数只有一个参数,不指定位数的时候,返回一个整数,而且是最靠近的整数,类似于四舍五入,当指定取舍的小数点位数的时候,一般情况也是使用四舍五入的规则,但是碰到.5的情况时,如果要取舍的位数前的小数是奇数,则直接舍弃,如果是偶数则向上取舍。

print('%f' % 1.11)
print('%.6f' % 1.23)

输出:
1.110000
1.230000

使用%s对字符串进行格式化输出

  • %10s:右对齐,占位符10位
  • %-10s:左对齐,占位符10位
  • %.2s:截取两位字符
  • %10.2s:左对齐,占位符10位,同时截取两位字符
print('字符串:','%s' % 'Hello Kitty')
print('右对齐:','%20s' % 'Hello Kitty')
print('左对齐:','%-20s' % 'Hello Kitty')
print('截取串:', '%.2s' % 'Hello Kitty')

输出:
字符串: Hello Kitty
右对齐: Hello Kitty
左对齐: Hello Kitty
截取串: He

使用format

相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’

位置匹配

  • {}
  • {1}、{2}:带数字编号可以条换顺序
  • {a}、{key}:带关键字
print('{} {}'.format('Hello', 'Kitty'))
print('{1} {0}'.format('Hello', 'Kitty'))

输出:
Hello Kitty
Kitty Hello

格式转换

  • ‘b’ - 二进制。将数字以2为基数进行输出。
  • ‘c’ - 字符。在打印之前将整数转换成对应的Unicode字符串。
  • ‘d’ - 十进制整数。将数字以10为基数进行输出。
  • ‘o’ - 八进制。将数字以8为基数进行输出。
  • ‘x’ - 十六进制。将数字以16为基数进行输出,9以上的位数用小写字母。
  • ‘e’ - 幂符号。用科学计数法打印数字。用’e’表示幂。
  • ‘g’ - 一般格式。将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印。
  • ‘n’ - 数字。当值为整数时和’d’相同,值为浮点数时和’g’相同。不同的是它会根据区域设置插入数字分隔符。
  • ‘%’ - 百分数。将数值乘以100然后以fixed-point(‘f’)格式打印,值后面会有一个百分号。
print('{:b}'.format(3))
print('{:%}'.format(0.5))

输出:
11
50.000000%

你可能感兴趣的:(23届秋招算法修炼,python,算法)