python笔试--接收控制台输入

https://blog.csdn.net/bytxl/article/details/47301319

单行输入

1. 字符和数字混合

# input: {1, 2, 3} 23
s = raw_input()

此时s保存就是整个输入,之后就需要手动的去获得里面的数据了。

一般常用的处理字符串的操作(split,int,float等等)加上数组切片就可以了

2. 纯数字

# input 23.45 25
s = input()

多行输入(利用sys.stdin)

import sys
for line in sys.stdin:
    print(line)

note:line是以字符串的形式来保存一行输入。

对于混杂的情况依然需要字符串处理以及切片等操作。不过对于很多情况,我们可以利用eval函数处理

eval(str):将字符串当成有效的表达式来求值并且返回计算结果。

just like:

# example1: input:{1, 2, 3, 4}
s = raw_input()  # s = '{1, 2, 3, 4}'
d = eval(s)   # d = {1, 2, 3, 4}
type(d)  # set类型

# example2: input: 0xA
s = raw_input()  # s = '0xA'
n = eval(s)   # n = 10
hn = hex(n)   # hn = '0xA'

利用eval(),可以很方便的将输入的字符串,转换成为对应的Python类型。另外,由于input函数其实就是调用了raw_input()后又用了eval函数处理了一下,所以对于上面的两个example,也可以写成

# 1. 输入:{1, 2, 3, 4}
d = input()  # d = {1, 2, 3, 4}
type(d)  # set类型
# 2.输入: 0xA
n = input() # n = 10

input 和 raw_input的关系就是:

raw_input接受返回的只是字符串,而input接受返回的是经过eval进行类型转换后字符串值,当然,如果输入不能用eval函数处理的话,也会报错。

def input(prompt):
    return eval(raw_input(prompt))

补充:

'''
求两个整数A+B的和

输入 
输入包含多组数据。 
每组数据包含两个整数A(1 ≤ A ≤ 100)和B(1 ≤ B ≤ 100)。
'''

while True:
    try:
        (n, m) = (int(x) for x in raw_input().split())
        print(m+n)
    except EOFError:
        break

猜你喜欢

转载自blog.csdn.net/Mr_XiaoZ/article/details/81279187