【洛谷题单】顺序结构(python3实现)

顺序结构

A+B problem

Solution & Method: 洛谷 P1001 A+B Problem(Python 3 基本输入输出方法及代码简化) - BrianPeng - 博客园 (cnblogs.com)

  1. 整型数据输入

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
  1. 分割问题

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))
​
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值