为了记录我的Python课,将我的作业发上来,欢迎各位大佬评鉴。如果你有什么更好的想法,请在下方评论或联系我。谢谢!
作业一:苹果、李子、橙
描述
1只苹果4元,1只橙子3元,4只李子1元,给你n元(n由用户输入的正整数),买n个果子,一共可以买多少只苹果、多少只橙子、多少只李子?
提示:输入使用 input() ,不要添加任何额外提示信息,输出严格按照输出示例输出,注意标点符号,以及输出不要增加任何空格类空白字符。
输入输出示例
输入示例1:
80
输出示例1:
苹果5只,橙子15只,李子60只。
苹果16只,橙子0只,李子64只。
输入示例2:
110
输出示例2:
苹果0只,橙子30只,李子80只。
苹果11只,橙子15只,李子84只。
苹果22只,橙子0只,李子88只。
代码:

n=int(input()) for x in range(0,n): for y in range(0,n): for z in range(0,n): if x*4+y*3+z/4==n and x+y+z==n: print("苹果{}只,橙子{}只,李子{}只。".format(x,y,z))
经验:
这道题我犯了两个错误,一个是比较低级的,忘记加句号了,这是一个小白错误,不该犯;
第二个是苹果、李子、橙的数量取值范围一开始定在了一百。这是因为我局限在了上一篇小组作业(百鸡百钱)中,以固有的思维模式看待问题,这是不可取的。后来我突然想到它们取值再大也比n小,所以把范围定在了(0,n)。
此外,需要考虑有种水果不买的情况,所以取值从0开始。
作业二:EAN13条形码的验证
描述
编写程序实现如下功能:
超市购买的商品包装上都会有一个条形二维码,一般是一种称为EAN13码的条码,一共由13个数字组成。前12位数字包含了国家代码、厂商代码和产品代码,最后一位数字是校验码,结构如下表所示(N1到N12为前12位数字,C为校验位数字):
N1 |
N2 |
N3 |
N4 |
N5 |
N6 |
N7 |
N8 |
N9 |
N10 |
N11 |
N12 |
C |
校验位C和前12位数字的运算关系如下:
设:
C1为前12位数字中的奇数位数字之和,即:C1=N1+N3+N5+N7+N9+N11
C2为前12位数字中的偶数位数字之和乘以3的结果,即:C2=(N2+N4+N6+N8+N10+N12)*3
CC 为 (C1 + C2)的个位数字
则:校验位数字C为10-CC的个位数字。
请编写程序用来检测用户输入的一个13位数字能否通过EAN13码的校验,能通过请输出:校验已通过;否则输出:校验未通过。
输入格式
输入使用 input(),不要增加额外的提示信息。
输出格式
输出结果应为“校验已通过”或“校验未通过”的一种,除此外不要输出任何其他内容。
输入输出示例
输入 | 输出 | |
示例 1 | |
|
示例 2 | |
|
代码:

n=eval(input()) a=str(n) C1=eval(a[0])+eval(a[2])+eval(a[4])+eval(a[6])+eval(a[8])+eval(a[10]) C2=(eval(a[1])+eval(a[3])+eval(a[5])+eval(a[7])+eval(a[9])+eval(a[11]))*3 b=C1+C2 c=str(b) CC=eval(c[-1]) C=eval(a[-1]) if C ==10-CC: print("校验已通过") else: print("校验未通过")
老师提供的代码:

#EAN13检验 ean13=input() C1=0 C2=0 for i in range(0,12,2): C1=C1+int(ean13[i]) for i in range(1,12,2): C1=C1+int(ean13[i])*3 CC=int(str((C1+C2))[-1]) C=str((10-CC))[-1] if C=ean13[-1]: print('校验已通过') else: print('校验未通过')
经验:
1.审题要清晰,之前程序出错,是因为CC是(C1+C2)的个位数字,而不是这两个数的个位数相加。
2.校验位数字C为10-CC的个位数字,即C等于10-CC,而不是C在(10,CC)的取值范围中。
总结:
Python课上了七八周,总算在今天觉得敲代码顺利了些,大概是勤能补拙吧!也非常感谢我的任课老师@xhsg,他以风趣幽默的方式让我不再害怕编程,并逐渐开始喜欢上了编程,这是我收获最大的地方。