程序是什么

学了几个月了,终于意识到了数据结构与算法的重要性

程序就是数据结构+算法

啥是算法

算法就是解决问题的方法,编程就是用代码解决一些现实中的问题的
算法入门练习可以去洛谷刷题

啥是数据结构

数据结构就比较深了,由最基础的顺序表引出链表,链表又引出树,树又引出图,这个自学的话,看视频推荐可以在哔哩哔哩搜索python数据结构,链接:https://www.bilibili.com/video/av21540971?from=search&seid=2968706098222425684

洛谷新手村的一些有意思的问题及代码实现

一. 三连击问题

  1. 题目:将1,2,⋯,9共9个数分成3组,分别组成3个三位数,且使这3个三位数构成1:2:3的比例,试求出所有满足条件的3个三位数。
  2. 要求不可重复,每个数在一组答案中只可出现一次
for i in range(123, 329):
    j = str(2 * i)
    k = str(3 * i)
    i = str(i)
    # 利用集合来去重
    a = {i[0], i[1], i[2], j[0], j[1], j[2], k[0], k[1], k[2]}
    if len(a) == 9 and '0' not in a:  # 去完重还剩九个数
    # 且没有0的这样一组数才是一组答案
        print(i, j, k)

二.分段计价问题
题目可以前往洛谷查看,粘不过来,抱歉
这类题目比较棘手的点无非就是判断条件,符合不同阶段时价格要变化

a=input()
a = int(a)
if a <= 150:
    money = a * 0.4463
if 151 <= a <= 400:
    money = (a - 150) * 0.4663 + 150 * 0.4463
if a >= 401:
    money = (400 - 150) * 0.4663 + 150 * 0.4463 + (a - 400) * 0.5663
if type(money) != int:
    money_list = str(money).split('.')
    if len(money_list[1]) > 1:
        flo = int(money_list[1][1])
        if flo >=5:
            money = money_list[0] + '.' + str(int(money_list[1][0]) + 1)
        else:
            money = money_list[0] + '.' + money_list[1][0]
print(money)

三.计数问题
题目可以前往洛谷查看,粘不过来,抱歉

inp = input().split()
n = int(inp[0])
x = inp[1]
s = ''
count = 0
for i in range(1, n+1):
    s += str(i)
for i in s:
    if i == x:
        count += 1
print(count)

四.买铅笔问题
题目可以前往洛谷查看,粘不过来,抱歉
这道题的题目看着是停复杂的,但实际上,只要满足需求不就好了吗,黑猫白猫能抓到耗子就是好猫

count = input()
case01_list = input().split()
case02_list = input().split()
case03_list = input().split()
case01_num = int(case01_list[0])
case02_num = int(case02_list[0])
case03_num = int(case03_list[0])
case01_price = int(case01_list[1])
case02_price = int(case02_list[1])
case03_price = int(case03_list[1])
num_list = [case01_num, case02_num, case03_num]
price_list = [case01_price, case02_price, case03_price]
price_count_list = []
j = 0
for i in num_list:
    result = int(count) / i
    a = '%g'%result
    a_list = a.split('.')
    if len(a_list) > 1:
        result = int(a_list[0]) + 1
    price_count = result * price_list[j]
    price_count_list.append(int(price_count))
    j += 1
print(min(price_count_list))

还有很多很多题,难度也是越来越大,大家加油
一些总结:
1.利用好字符串,对于一些数字的处理,尤其是关于位数的,用字符串切片简直就完美
2.从题目中找关键的点,也就是数据,提供了哪些可用数据,要求用这些数据得出什么结果,找到了这些点这道题基本就做出来一半了

你可能感兴趣的:(洛谷,python)