oj.py-20180414

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Apr  9 21:30:01 2018

@author: vicky
"""
#例1:a+b
#输入
#1 5
#2 3
#输出
#6
#3
import sys 
for line in sys.stdin: #循环读每行
    a = line.split() #以列表的形式读入
    print(int(a[0])+int(a[1])) #注意要类型转换

#输入不止一行,是每行,读每行数据直到空。加个while就能通过
while True:
    try:
        a=list(map(int,input().split()))
        print(sum(a))
    except:
        break

import sys
for line in sys.stdin:
    a = [int(i) for i in line.split()]
    print(a[0] + a[1])

a=input('输入样例') 
print(a) #a是string,输入:1 2 3,输出‘1 2 3’

#---------------------------------------------------------------------------------
常用输入!!!
#输入问题input:
#输入以空格为间隔的数组1 2 3。a是string,a=‘1 2 3’
a=input('输入样例') 

读一行----------
#法1:split()分割间隔,int()转化成整数格式,[]转化为list
b1=[int(n) for n in input().split()] 
#法2:因为int函数不能对列表操作,只能对的单个字符操作,所以用map(int,...)转化为整数;
#另外,如果以其他字符为间隔,如逗号,则其中的split()改为split(‘,’)即可。
#注意,这种方法要得到列表,前面必须加list,map只返回一个map对象
b2 =list(map(int, input().strip().split())) 
#print(a,b1,b2) #b1,b2是list。b1=b2=[1,2,3]

读多行----------
#输入:
#3
#1 2 3
#2 1 3
#3 2 1
#读第一行
n=int(input()) 
l=[]
for i in range(n):
    l=l+[int(n) for n in input().split()]
#接着读n行并合并成一个list,l=[1,2,3,2,1,3,3,2,1]

#输出问题:
print(a,b,sep='',end='\n')
#其中,end----指定在参数末尾打印什么,默认换行; sep----指定在参数中间打印什么来间隔,默认空格
#print在Python中默认换行的
#print不换行:
print(a,b,end = '')
#print中间以冒号间隔:
print(a,b,sep= ';')

#将list转换为字符串输出,以逗号连接
print(','.join(str(l[i]) for i in range(k)))
#l=[1,2,3],输出'1,2,3'
#---------------------------------------------------------------------------------

#例2:求n阶方阵所有元素的和
#输入:
#3
#1 2 3
#2 1 3
#3 2 1
#输出:18

import sys
if __name__ == "__main__":
    # 读取第一行的n
    n = int(sys.stdin.readline().strip())
    ans = 0
    for i in range(n):
        # 读取每一行
        line = sys.stdin.readline().strip()
        # 把每一行的数字分隔后转化成int列表
        values = list(map(int, line.split()))
        for v in values:
            ans += v
    print(ans)

#---------------------------------------------------------------------------------
#输入问题sys:用pycharm运行!!!!
#sys.stdin 标准输入, sys.stdout 标准输出

#readline()从文件读取整行
#  eg: fo = open("runoob.txt", "r+") # 打开文件
#    line = fo.readline() #读取第一行
#    print ("读取第一行 %s" % (line)) #输出:读取第一行 1:www.runoob.com

#strip() 移除字符串头尾指定的字符(默认为空格)
#    string.strip([chars]),chars为移除字符串头尾指定的字符
#  eg: str = "*****this is string example....wow!!!*****"
#      print (str.strip( '*' )) #输出:this is string example....wow!!!

#split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串
# 语法:string.split(str="", num=string.count(str))
# eg: str = "this is string example....wow!!!"
#     print (str.split( ))
#     print (str.split('i',1))
#     print (str.split('w'))


#对比input和sys:
#sys.stdin.readline() 仅接受一行的全部输入
#sys.stdin.read()可以接受多行的标准输入

#sys.stdin.read()和input()接受和返回的都是原始字符串
重点!!!!!!
input():遇到输入enter停止输入,返回。返回的结果不包含末尾的换行符'\n'
sys.stdin.read():读取数据 ctrl+d是结束输入 ,enter是换行。故可以接受多行输入
sys.stdin.readline( ) 只接受一行输入,enter是结束。多行输入要写循环读,循环时ctrl+d是结束输入 ,enter是换行。
     会将标准输入全部获取,包括末尾的'\n',因此用len计算长度时是把换行符'\n'算进去了的,
     可用sys.stdin.readline( ).strip(‘\n’)去掉换行符。遇到enter返回。
#---------------------------------------------------------------------------------

#第一题:幸运时刻的个数 (sys用pycharm运行!!!!)
#输入格式:
#12:21 34:34
#输出格式
#2
import sys 
n=sys.stdin.readline().split()
#fo=open('/Users/vicky/Documents/code/python/time.txt')
array = sys.stdin.readline().strip(" ").split() 
sum = 0
for j in array:
    if j[0]==j[1] and j[3]==j[4]:
        sum +=1
    elif j[0]==j[3] and j[1]==j[4]:
        sum+=1
    elif j[0]==j[4] and j[1]==j[3]:
        sum+=1
print(sum)

#第二题:奇偶数分解
#输入格式:
#2
#10
#3
#输出格式:(输出最小奇数和对应偶数)
#5 2
#'No'
T = int(input()) #读第一行
m=[]
for i in range(T):  #读之后的T行
    m.append(int(input()))  #int转换后,append用于在list末尾加新对象
for n in m:
    if n %2 != 0:
        print("No")
    k=n
    while n%2 == 0: #一直整除2直到n为奇数
        n=n/2
        print(int(n),int(k/n))


#---------------------------------------------------------------------------------
https://www.zybuluo.com/diyer22/note/310572#python刷oj适合人群
二. 输入部分
1. 只需输入一行
listt = map(lambda x:int(x), input().split())
2. 要输入N行
a = [map(f, input().split()) for i in range(n)]
3. 多样例输入(EOF)
import sys    
for line in sys.stdin:
    print int(line)**2
    
三. 输出部分
1. 关于print注意以下几点
    1.print(a, b)中,,会被替换为一个空格
    2.若打印两个变量不想要中间的空格,则换为print str(a)+str(b)
    3.print 函数会自动在行尾添加一个'\n'
    4.若不想在行尾换行,可在print语句的最后面添加一个,(但有空格)
    5.在for循环中的print,既不想换行也不想要空格,在迭代中无法使用str(a)+str(b),则使用创建空字符串法:
    strr = ''  # 创建一个空字符串
    for i in listt:
        strr += i  # 依次添加 i,若是数字,记得换为str(i)
    print strr  # 完美打印

2. 不清楚的格式错误
例:要求输出列表listt中的每一个数字,每个数字间有一个空格,但末尾不能有空格
解:
strr = ''  # 创建一个空字符串
for i in listt:
    strr += str(i)+' '  # 数字后面加了一个空格
print strr[:-1]  # 使用切片,去掉了最后一个空格

3. 对于列表标准输出,懒人专用的一行代码版
print str(a[i]).replace(', ',' ').replace('\'','')[1:-1]+' ' 
(同时适用于字符串和数字列表)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值