目录
- 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<N-j:
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年试卷
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