编程题
1.计算马铃薯销售金额(15分)
马铃薯也叫土豆,是一种常见的根茎类蔬菜,每个土豆根据重量可以分为以下四个等级:
A类(大土豆) 重量>=50克
B类 (中土豆) 50克>重量>=30克
C类(小土豆) 30克>重量>=20克
D类(微小土豆)重量<20克
不同类别市场批发价格也不同:
A类:1.5元/500克
B类:1.2元/500克
C类:1元/500克
D类:0.7元/500克
阿宝下乡研学期间发现土豆的分类和分拣通常由人工观察,进行大致分类。阿宝想,是否可以做一个自动分拣土豆机,根据土豆的重量结合机械手臂进行自动分拣。
你可以帮助阿宝编写这个程序吗?该程序需要实现以下功能:
(1)录入每个土豆的重量(用来模拟,称重后的读数);假定输入数据是合理范围(都是大于等于0的数字,为了便于计算,要求输入的数据都是整数)
(2)当录入0时,程序停止运行,并打印所有土豆售出后的销售额;(提醒大家,土豆的售价是以500克为单位,每个土豆的价格需要进行换算,换算公式为:每个土豆价格=每个土豆的重量*批发价/500)
(3)销售金额,最终结果保留2位小数
友情提示:
由于考试平台暂不支持eval()命令,同学们可以选用其他命令;当然如果您使用了,只要程序是正确的,我们阅卷时依然按照正常处理。
题目解析
我们来一起看看这个有趣的题目。阿宝想要做一个自动分拣土豆机,我们要帮他编写一个程序来模拟这个分拣过程,并且计算出所有土豆卖出去能得到多少钱。下面我们一步一步来理解这个题目。
1. 土豆的等级分类
土豆根据重量被分成了四个等级,就好像小朋友们根据身高被分成不同的小组一样。
- A类(大土豆):重量大于等于50克,就像班级里个子比较高的小朋友。
- B类(中土豆):重量小于50克但是大于等于30克,是中等个子的小朋友。
- C类(小土豆):重量小于30克但是大于等于20克,是个子稍微小一点的小朋友。
- D类(微小土豆):重量小于20克,就是班级里个子最小的小朋友。
2. 不同等级土豆的价格
不同等级的土豆,在市场上的批发价格是不一样的,就像不同大小的玩具价格不同一样。
- A类土豆:每500克卖1.5元。
- B类土豆:每500克卖1.2元。
- C类土豆:每500克卖1元。
- D类土豆:每500克卖0.7元。
3. 程序的功能
我们要编写的程序有两个主要功能:
- 录入土豆重量:我们要一个一个地输入每个土豆的重量,就像给每个小朋友量身高一样。这里输入的重量都是大于等于0的整数。
- 计算销售额:当我们输入0的时候,就表示我们已经把所有的土豆重量都输完了,这时候程序要停止运行,并且计算出所有土豆卖出去能得到多少钱。计算每个土豆的价格要用这个公式:每个土豆价格 = 每个土豆的重量 * 批发价 / 500。最后算出来的销售金额要保留两位小数,就像我们去超市买东西,价格一般都保留到分一样。
参考答案
# 初始化总销售额为0
total_sales = 0
while True:
# 提示用户输入土豆的重量
weight = int(input("请输入土豆的重量(输入0结束录入):"))
# 如果输入的重量是0,停止录入
if weight == 0:
break
# 根据土豆的重量判断等级,并计算价格
if weight >= 50:
# A类土豆,每500克1.5元
price = weight * 1.5 / 500
elif 30 <= weight < 50:
# B类土豆,每500克1.2元
price = weight * 1.2 / 500
elif 20 <= weight < 30:
# C类土豆,每500克1元
price = weight * 1 / 500
else:
# D类土豆,每500克0.7元
price = weight * 0.7 / 500
# 把当前土豆的价格加到总销售额里
total_sales += price
# 打印最终的总销售额,保留两位小数
print(f"所有土豆售出后的销售额为:{total_sales:.2f}元")
这个程序首先把总销售额初始化为0,然后进入一个循环,不断地让用户输入土豆的重量。当用户输入0的时候,循环就会停止。在循环里,程序会根据输入的土豆重量判断它属于哪个等级,然后计算出这个土豆的价格,把这个价格加到总销售额里。最后,程序会打印出所有土豆的总销售额,并且保留两位小数。这样,我们就完成了自动分拣土豆机的模拟程序啦!
2.处理单词中是否有重复(15分)
小龙同学有个神奇的优势:只要单词中的字母没有任何重复,他就能过目不忘。如果有重复,他则需要专门记忆。请写一段程序,输入一个单词,如果小龙能过目不忘(即:单词中没有重复的字母)则输出"yes",否则(即:单词中有重复的字母)输出"no"。
友情提示:
由于考试平台暂不支持eval()命令,同学们可以选用其他命令;当然如果您使用了,只要程序是正确的,我们阅卷时依然按照正常处理。
评分标准:
(1)有输入语句;(2分)
(2)对输入的词语有遍历处理;(2分)
(3)有识别是否有重复字符的程序;(4分)
(4)有条件语句;(2分)
(5)有输出语句;(2分)
(6)程序运行正确。(3分)
题目解析
1. 程序的输入
程序需要我们输入一个单词,这个单词就是我们要判断的对象,就好像我们要给小龙看的一个神秘代码,看看他能不能轻松记住。
2. 程序的处理过程
我们要对输入的这个单词进行检查,看看里面有没有重复的字母。这就好比我们要检查一串珍珠项链,看看有没有两颗一模一样的珍珠。为了完成这个检查,我们需要对单词里的每个字母都进行观察,也就是要遍历这个单词。
3. 程序的输出
根据检查的结果,程序要输出不同的信息。如果单词里没有重复的字母,就像项链里每颗珍珠都不一样,那么小龙就能过目不忘,我们的程序要输出 “yes”;如果单词里有重复的字母,就像项链里有两颗一样的珍珠,小龙就需要专门记忆,程序要输出 “no”。
参考答案
# (1)有输入语句
word = input("请输入一个单词:")
# 用于记录已经出现过的字母
seen_letters = []
# (2)对输入的词语有遍历处理
for letter in word:
# (3)有识别是否有重复字符的程序
if letter in seen_letters:
# 发现重复字母
result = "no"
break
else:
# 将当前字母添加到已出现字母列表中
seen_letters.append(letter)
else:
# 遍历完单词都没有发现重复字母
result = "yes"
# (4)有条件语句(在遍历过程中使用了条件判断)
# (5)有输出语句
print(result)
代码解释
- 输入语句:使用
input
函数让用户输入一个单词,并将其存储在变量word
中。 - 遍历处理:使用
for
循环遍历word
中的每个字母。 - 识别重复字符:使用一个列表
seen_letters
来记录已经出现过的字母。在遍历过程中,检查当前字母是否已经在seen_letters
列表中,如果是,则说明有重复字母,将结果设为 “no” 并跳出循环。 - 条件语句:在
for
循环中使用if
语句判断字母是否重复,同时使用else
子句处理遍历完单词都没有发现重复字母的情况。 - 输出语句:使用
print
函数输出最终的判断结果。 通过以上步骤,程序可以正确判断输入的单词中是否有重复字母,并输出相应的结果。