算法就是解决问题的方法,编程就是用代码解决一些现实中的问题的
算法入门练习可以去洛谷刷题
数据结构就比较深了,由最基础的顺序表引出链表,链表又引出树,树又引出图,这个自学的话,看视频推荐可以在哔哩哔哩搜索python数据结构,链接:https://www.bilibili.com/video/av21540971?from=search&seid=2968706098222425684
一. 三连击问题
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.从题目中找关键的点,也就是数据,提供了哪些可用数据,要求用这些数据得出什么结果,找到了这些点这道题基本就做出来一半了