顺序结构
A+B problem
Solution & Method: 洛谷 P1001 A+B Problem(Python 3 基本输入输出方法及代码简化) - BrianPeng - 博客园 (cnblogs.com)
-
整型数据输入
input()
函数是读入一行
>>> a = input() 20 30 >>> type(a) <class 'str'>#类型为字符串,不符合整型要求 >>> a '20 30'
input()
返回的是一个字符串,内容为输入的一行
int()
为整数的类型符,作为函数时可以强制转换,它让python将输入视为数值,将字符串表示转换为数值表示
>>> a = '20' >>> type(a) <class 'str'> >>> b = int(a)#int强制转换 >>> type(b) <class 'int'> >>> b 20
-
分割问题
str.split()
方法,把输入的字符串按照空格,换行符,制表符等分割为由字符串组成的列表
>>> a = input() python 3 >>> a 'python 3' >>> b = a.split() >>> type(b) <class 'list'> >>> b ['python', '3']#空格等符号就都消除
另外,split()
作为 str
类的一个成员方法,而 input()
本身就返回 str
类,所以可以直接简写成 input().split()
s=input().split() print(int(s[0])+int(s[1]))
map()
可以进行群体变换,接收一个函数和一个列表,返回一个列表的迭代器(要返回原列表还要用list()
,强制转换)其中这个列表的元素是输入map()
的列表里每一个元素作用一遍前面的函数之后的返回值。
除此之外,还可以用[f(x) for x in a ]
构造方法等价于list(map(f,a))
总的来说,如果直接使用函数,map()
更方便,如果是表达式,[... for ... in ...]
更方便
一行AC代码
print(sum(map(int,input().split()))) print(sum([int(x) for x in input().split()]))
字符三角形
注意读题,搞清楚输入和输出的关系,是将输入的符号形成一个三角形。
base,height= 5,3 #可根据情况灵活更改 a = input() for i in range(height): print(" "*(height-i-1),end="") # 每行空格数 print(a*(2*i+1),end="") # 每行字符数 print()
字母转换
lower()
将字符串中的大写字母转换成小写字母
语法:str.lower()
upper()
将字符串的小写字母转换为大写字母
语法:str.upper()
capitalize()
将字符串的第一个字母变成大写,其余字母变为小写。 语法:str.capitalize()
title()
返回一个满足标题格式的字符串,即所有英文单词首字母大写,其余英文字母小写。 语法:str.title()
swapcase()
将字符串str中的大小写字母同时进行互换,即将字符串str中的大写字母转换为小写字母,将小写字母转换为大写字母。 语法:str.swapcase()
(125条消息) Python 大小写转换python大小写转换代码cw7600的博客-CSDN博客
解题方法
a = input() print(a.upper())
P5705 【深基2.例7】数字反转
实现倒叙的方法
切片方法
list =[1,2,3,4,5,6] list1=list[::-1] print (list1)
reverse()
函数
>>> a = list(input()) 12345 >>> a ['1', '2', '3', '4', '5'] >>> a.reverse() >>> a ['5', '4', '3', '2', '1']
sort()
函数
>>> a = list(input()) 12345 >>> a ['1', '2', '3', '4', '5'] >>> a.sort(reverse = True) >>> print(a) ['5', '4', '3', '2', '1']
解题方法:
a = input() c = a[::-1] print(float(c))
P5706 【深基2.例8】再分肥宅水
保留float类型小数点后3位方法
round()
>> x = 3.897654326 >> round(x, 3) 3.898 >> x = 3.000000 >> round(x, 3) 3.0
round函数自动四舍五入;自动去掉多余的0a
'%.3f'%x
>> x = 3.897654326 >> '%.3f' % x 3.898 >> x = 3.000000 >> '%.3f' % x 3.000
解题方法:
s = input().split() a = float(s[0]) b = int(s[1]) c = round(a/b,3) d = b*2 print(c) print(d)
P5708 【深基2.习2】三角形面积
开根号的方法
指数运算符 **
>>> a = 16 >>> x = a**0.25 >>> x 2.0 >>> a = 27 >>> x = a**(1/3) >>> x 3.0
sqrt()
import math math.sqrt( x )
pow()
使用:pow(数字,次方)
x = pow(n,0.5) print(x)
解题方法:
import math a = map(float,input().split()) a = list(a) p = sum(a)/2 q = p*(p-a[0])*(p-a[1])*(p-a[2]) x = math.sqrt(q) print('%0.1f'%x)
P5707 【深基2.例12】上学迟到
向上向下取整
math.ceil()
将 x 向上舍入到最接近的整数。
math.floor()
将 x 向下舍入到最接近的整数。
>>> import math >>> math.ceil(3.444) 4 >>> math.floor(3.444) 3
解题思路:
题中要求可以提前但是不能提前超过一天的时间,
第一个问题就是题目中含有小时和分钟,两者之间的关系直接运算有一定的难度,但是将两者统一转换为分钟运算就会比较简单。
第二个问题就是要判断是前一天还是后一天,这就需要将转换后的时间与60*24作比较
解题方法:
import math s, v = map(int, input().split()) n = 8 * 60 + 24 * 60 # 两天总共可以走的时间 t = math.ceil(s / v) + 10 # math.ceil向上取整 n = n - t # 得出剩下的时间 if n > 24 * 60: # 判断是否在前一天 n -= 24 * 60 b = n % 60 # 出发的分 a = n / 60 # 出发的时 if a < 10: if b < 10: print("0%d:0%d" % (a, b)) else: print("0%d:%d" % (a, b)) else: if b < 10: print("%d:0%d" % (a, b)) else: print("%d:%d" % (a, b))