python编程-笔试-输入输出

转自:https://blog.csdn.net/weixin_44931681/article/details/108320505

目录
1.分别存储每一列
2.普通输入
3.多行输入
4.控制台输入input()、sys.stdin()
5.笔试题练习
美团编程
奇安信笔试题1,买信封问题
奇安信笔试题2,三角形三边和相等
华为2017软件工程
1.汽水瓶问题
2.随机数去重排序
2016年试卷
1.分别存储每一列
#分别存储每一列


n = int(input())
a = []
b = []
c = []
for i in range(n):
    A, B, C = map(int, input().split())
    a.append(A)
    b.append(B)
    c.append(C)
print(a)
print(b)
print(c)

2.普通输入
##输入一行2 3
a = input().split()
print(a) ##["2","3"]
##输入两行
##5
##1 5 6
a = []
b = input()
print(b)##5
s = input().split()
print(s) ##['1','5','6']
for i in s:
    a.append(i)

3.多行输入
import sys
try:
    while True:
        line1 = sys.stdin.readline().strip()
        if line1 == '':
            break
        line2 = sys.stdin.readline().strip()
        a = int(line1)
        l = list(map(int, line2.split()))
        b = [int(n) for n in line2.split()]
        print(a)
        print(l)
        print(b)
except:
    pass

#分别存储每一列
n = int(input())
a = []
b = []
c = []
for i in range(n):
    A, B, C = map(int, input().split())
    a.append(A)
    b.append(B)
    c.append(C)
print(a)
print(b)
print(c)

# 多行输入-每行输入一个数/字符串
# 如果每行只输入一个数或者字符串的话这种情况直接使用while循环和input进行读取。
while True:
    s = input()
    if s != "":
        print(s)
    else:
        break

# 每行读取不同内容
# 有的时候题目要求每行内容输入不同,举个例子,第一行输入操作个数,从第二行还是输入n个数组。
data = []
length = int(input())
n = 0
while n < length:
    s = input()
    if s != "":
        temp = [i for i in s.split()]
        data.append(temp)
        n = n + 1
    else:
        break
print(data)

#单行一个数字转数组,如2 
n=int(input())
n=eval(input())
#单行多个数字转数组,如2 3 4 5
num=[int(n) for i in input().split(',')]

牛客刷题注意
如果没有异常处理,程序就停不下来,或者只有遇到错误才停下来。你遇到的这种就属于后者。牛客刷题两种套路,如果多组数据,不管三七二十一,先写while True,再写try except。如果一组数据,直接写代码就可以了。

4.控制台输入input()、sys.stdin()
需求
接收控制台两行数据的输入,一个为整数,一个为数组(各个元素都是int型)
(1)input()操作

#coding utf-8
#input()函数接收两行输入,第一个为整数、第二个为数组
a = int(input())
#进行map()操作后,要用list()才能打印
b = list(map(int,input().split()))
print(a)
print(b)
输入为:2
3 3 4 5 6 6
输出为:2
[3,3,4,5,6,6]

(2)sys.stdin()
sys.stdin()操作,可单行,可多行,整体输入
01文本整体输入/单行输入输出

#文件名为test.py
import sys
for line in sys.stdin.readlines():
    if not line:
        break
    else:
        print (int(line))
输入
15
5
输出
15
5      

02多行输入

import sys
try:
    while True:
        line1 = sys.stdin.readline().strip()
        if line1 == '':
            break
        line2 = sys.stdin.readline().strip()
        a = int(line1)
        l = list(map(int, line2.split()))
        b = [int(n) for n in line2.split()]
        print(a)
        print(l)
        print(b)
except:
    pass

输入:

输出

转载自:添加链接描述
03 sys.stdin是一个标准化输入的方法。
python3中使用sys.stdin.readline()可以实现标准输入,其中默认输入的格式是字符串,如果是int,float类型则需要强制转换

import sys
try:
    while True:
        print('Please input a number:')
        n = int(sys.stdin.readline().strip('\n')) #strip('\n')表示以\n分隔,否则输出是“字符串+\n”的形式
        print('Please input some numbers:')
        sn = sys.stdin.readline().strip()#若是多输入,strip()默认是以空格分隔,返回一个包含多个字符串的list。
        if sn == '':
            break
        sn = list(map(int,sn.split())) #如果要强制转换成int等类型,可以调用map()函数。
        print(n)
        print(sn,'\n')
except:
    pass

输出:

转载自:添加链接描述

5.笔试题练习
美团编程
1.山峰元素是指其值大于或等于左右相邻值的元素。给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。假设 nums[-1] = nums[n] = -∞

import sys
nums = list(map(int,sys.stdin.readline().strip().split(' ')))
result = 0
i=len(nums)-1
while i>0:
    if nums[i]>=nums[i-1]:
        result = i
        break
    i-=1
print(str(result))


def mountain_peak(a):
    b=len(a)-1
    for i in range(1,b):
        medium=a[i]
        left=a[i-1]
        right=a[i+1]
        if medium>left:
            if medium>right:
                d=i
                e=medium
            else:
                continue
    print(d,e)
#测试
a=[1, 3, 5, 17, 4, 6, 15, 3, 9, 7, 9, 6, 8, 5]
A=mountain_peak(a)

给定一个整数数组,返回一个数组。该返回数组中第i个数字为,原数组中第i个位置的数字至少往右走多少步才能遇到比它大的数字。如果遇不到或者已经处于最右的位置,则置为-1。
输入为多行,第一行为一个整数N,1≤N≤106,接下来一共有N行,每一行为一个整数M,0≤M≤232-1
输出 N 行,每行一个数字表示转换之后的数组

N = int(input().strip())
arr = []
for i in range(N):
    arr.append(int(input().strip()))
for j in range(N): 
    k=1
    while k         if arr[j+k]>arr[j]:
            print(k)
            break
        k+=1
    else:
        print(-1)

自己写的

def righthigh(list):
    return_list=[]
    l=len(list)
    for i in range(l-1):
        a=0
        for j in range(i+1,l):
            if list[j]>list[i]:
                a=j-i
                break
            else:
                continue
        if a==0:
            a=-1
        return_list.append(a)
    return_list.append(-1)
    print(return_list)
list = [3,2,6,4,5]
A=righthigh(list)

输入年份月份,请输出这个月的天数
闰年是400的倍数,但不是100的倍数

def get_month_year(x, y):
    if y in [1, 3, 5, 7, 8, 10, 12]:
        return 31
    elif y in [4, 6, 9 ,11]:
        return 30
    elif y == 2 and x%4 == 0 and x%100 != 0 or year % 400 == 0:
        return 29
    else:
        return 28
while True:
    try:
        year, month = map(int,input().split())
        print(get_month_year(year, month))
    except:
        break;

奇安信笔试题1,买信封问题
number = input()
n = int(number)
print(n)
a=[1,2,2,2,5,1,1]#钱数
b=[5,3,3,2,4,1,3]#个数
a=[1,2,2,2,5,3]#钱数
b=[5,3,3,2,4,1]#个数
money=0
sum=0
for i in range(len(a)):
    if a[i]<=n:
        money += a[i]
        sum+=b[i]
        n-=a[i]
    else:
        i+=1
        if i>=len(a):
            break
print(sum)

奇安信笔试题2,三角形三边和相等
num=[int(n) for i in input().split(',')]
s1=num[0] + num[1]+num[2] + num[3]
s2=num[3] + num[4]+num[5] + num[6]
s3=num[6] + num[7]+num[8] + num[0]
if s1==s2==s3:
    print('yes')
else:
    print('no')

华为2017软件工程
试卷链接:添加链接描述

1.汽水瓶问题


import sys
def drink(n):
    if n<2:
        return 0
    elif n==2:
        return 1
    return n//3+drink(n//3+n%3)
for line in sys.stdin:
    n=int(line.strip())
    if n!=0:
        res=drink(n)
        print(res)
    else:
        break

#法二
while True:
    try:
        n=int(input())
        if n!=0:
            print(n//2)
    except:
        break

2.随机数去重排序
```python
while True:
try:
a,res=int(input()),set()
for i in range(a):
res.add(int(input()))
for i in sorted(res):
print(i)
except:
break

## 3.输入一个十六进制的数值字符串,输出该数值的十进制字符串。
接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )
```python
while True:
    try:
        print(int(input(), 16))
    except:
        break

2016年试卷
链接:https://www.nowcoder.com/questionTerminal/3897c2bcc87943ed98d8e0b9e18c4666
来源:牛客网

while True:
    try:
        a, b = map(int, input().split())
        grades = list(map(int, input().split()))
        for i in range(b):
            command = input().split()
            if command[0] == "Q":
                start, end = sorted([int(command[1]), int(command[2])])
                print(max(grades[start - 1:end]))
            else: grades[int(command[1]) - 1] = int(command[2])
    except:
        break
————————————————
版权声明:本文为CSDN博主「wuli玉shell」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44931681/article/details/108320505

你可能感兴趣的:(面试题,python)