前言:这次的作业有六道,难度均有所上升。敲代码过程中遇到很多错误,准备总结出来作为一份错误经验帖单独列出来,敬请期待!
为了记录我的Python课,将我的作业发上来,欢迎各位大佬评鉴。如果你有什么更好的想法,请在下方评论或联系我。谢谢!
作业一:奇偶不同,结果不同(升级版)
描述
使用两个 input() 接收用户的两个输入,第一个为一个整数,第二个为一个任意字符串。根据第一个整数为奇数还是偶数执行不同的操作。
具体要求如下:
1、如果第一个整数为奇数(假设为3),第二个字符串假设为"abc",则输出3遍"abc"中间用英文逗号","分割;即第一个整数为奇数n,则输出n遍第二个字符串,字符串中间用英文逗号分割;
2、如果第一个整数为偶数(假设为4),第二个字符串假设为"abc",则输出4遍"abc"的逆序字符"cba"中间用英文逗号","分割;即第一个整数为偶数n,则输出n遍第二个字符串的逆序串,逆序串中间用英文逗号分割。
特别说明:输入使用 input(),不要增加额外的提示信息,输出结果中不要有任何空格类空白符号。
输入格式
两个输入第一个为正整数,第二个为一串字符,输入使用 input(),不要增加额外的提示信息。
输出格式
按要求输出一行结果,除此外不要输出任何内容。
输入输出示例
输入 | 输出 | |
示例1 | |
|
示例2 | |
|
代码:

a=int(input()) b=input() if a%2==1: for i in range(a): if i==a-1: print("{}".format(b),end='') break; print("{}".format(b),end=',') else : for i in range(a): if i==a-1: print("{}".format(b[::-1]),end='') break; print("{}".format(b[::-1]),end=',')
经验:
这道题参考了一位同学的答案,我的代码使用split函数时总出错,所以放弃使用那个函数了。
作业二:英寸和厘米的交互(升级版)
描述
虽然我国已经很好的普及了国际单位制,而在现实生活中,仍然有很多地方采用了英制单位来描述,例如,我们买一台65寸的电视,这个地方的寸指的就是英寸,或者拍一张2寸的照片,用的是相同的英制单位。
现在已知 1英寸 = 2.54厘米。
请编写程序实现以英寸标识的数据和以厘米标识的数据的互相转换。
输入格式
用户输入英制单位数据时,可以输入的形式为以“i”或“inch”结尾的数字,例如:65i、23inch 。
用户输入国际单位制数据时,可以输入的形式为以“c”或“cm”结尾的数字,例如:18c、88cm 。
特别注意: 输入使用input(),不要增加额外的提示信息
输出格式
结果为厘米为单位的数据时,输出格式为数字后跟cm的形式,例如,120cm 。
结果为英寸为单位的数据时,输出格式为数字后跟inch的形式,例如,120inch 。
用户输入的内容结尾不为“inch”、“i”、“cm”、“c”中的任何一个数据时,输出结果为:输入错误。
输入输出示例
请严格按照输入输出示例样式完成程序。
输入 | 输出 | |
示例 1 | |
|
示例 2 | |
|
示例 3 | |
|
示例 4 | |
|
示例 5 | |
|
代码:

a=input() b=a[-1] if b in["m","c"]: if b=="c": y=eval(a[:-1])/2.54 print("{:.2f}inch".format(y)) elif b=="m": y=eval(a[:-2])/2.54 print("{:.2f}inch".format(y)) elif b in["h","i"]: if b=="i": y=eval(a[:-1])*2.54 print("{:.2f}cm".format(y)) elif b=="h": y=eval(a[:-4])*2.54 print("{:.2f}cm".format(y)) else: print("输入错误。")
经验:
(原版在我的上一篇博客 Python课 #03号作业中)作为英寸和厘米的交互升级版,主要区别是最后一位字符多了"m"(cm)和"h"(inch)的选项;以及在进行计算时,需要考虑把”inch“、"cm"、"i"、"c"等不同长度的字符串去掉的情况。不过我在想有没有一个这样的函数,可以直接去掉首位或者末尾字符串然后计算呢?
老师提供了一种解题思路:

s=input('input a number start or end with u/U/r/R:') if s[0] in 'uU' or s[-1] in 'uU': money=eval(s.strip('uU')) print('输入的是美金{}元。'.format(money)) print(type(money)) elif s[0] in 'rR' or s[-1] in 'rR': money=eval(s.strip('rR')) print('输入的是人民币{}元。'.format(money)) print(type(money)) else: print('输入错误')
作业三:人民币和美元转换
描述
用户输入人民币或美金数额,转换为对应的美金或人民币数额。
用户输入的数字前后带有字符"r"或"R"表示为人民币,前后带有字符"u"或"U"表示美金。
编写程序实现此功能(汇率按 1美元=6.51人民币),输入使用input(),不要增加额外的提示信息。
输出结果为转换后的数值,保留两位小数。
提示:
输出格式可以采用print函数中留槽的方式使用 "{:.2f}"实现。
输入 | 输出 | |
示例1 | |
|
示例2 | |
|
示例3 | |
|
示例4 | |
|
示例5 | |
|
示例6 | |
|
示例7 | |
|
示例8 | |
|
代码:

a=input() b=a[-1] c=a[0] if c in["u","U"]: y=eval(a[1:])*6.51 print("{:.2f}".format(y)) elif c in["R","r"]: y=eval(a[1:])/6.51 print("{:.2f}".format(y)) elif b in["u","U"]: y=eval(a[:-1])*6.51 print("{:.2f}".format(y)) elif b in["R","r"]: y=eval(a[:-1])/6.51 print("{:.2f}".format(y))
经验:
这道题一开始想用while循环语句,后来发现不用也可以达到目的。a[1:]的意思是除第一位以外的字符串。
作业四:输出3个数中的最大值
描述
使用3个input()函数,接收3个整数,将其最大值输出。
输入格式
输入使用input(),不要增加额外的提示信息。
输出格式
输出内容为3个整数中的最大值,具体参阅输入输出示例。
输入输出示例
输入 | 输出 | |
示例 1 | |
|
示例 2 | |
|
代码:

a=eval(input()) b=eval(input()) c=eval(input()) if a>b: if a>c: print(a) else: print(c) else: if b<c: print(c) else: print(b)
升级:后来老师说有max函数,所以可以写为:
print("{}".format(max(eval(input()),eval(input()),eval(input())))
作业五:输入3个数字,由小到大输出
描述
用户依次输入3个数字(每个输入占一行),如下面输入所示,程序将这三个数字由小到大依次输出,如下面输出示例:
注意:输入使用 input() 形式,不要增加任何其他附加信息。
输入输出示例
输入 | 输出 | |
示例 1 | |
|
示例 2 | |
|
代码:

a=eval(input()) b=eval(input()) c=eval(input()) if a>b: if a>c: if b>c: print("{}\n{}\n{}\n".format(c,b,a)) else: print("{}\n{}\n{}\n".format(b,c,a)) else: print("{}\n{}\n{}\n".format(b,a,c)) else: if b>c: if a<c: print("{}\n{}\n{}\n".format(a,c,b)) else: print("{}\n{}\n{}\n".format(c,a,b)) else: print("{}\n{}\n{}\n".format(a,b,c))
经验:
也许这道题还有更简单的代码,我的代码还是太过繁琐,中间还丢过两种情况,幸好后来发现了。
升级:
嗯,确实有更简单的:

a=eval(input("")) b=eval(input("")) c=eval(input("")) if a>b: a,b=b,a if b>c: b,c=c,b if a>c: a,c=c,a print(a) print(b) print(c)
作业六:拍7游戏
描述
“拍7游戏”规则是:一堆人围成一圈,开始时,任意指定一人说出数字“1”后,一圈人按顺时针方向,每人按整数由小到大的顺序一人一个地报出后续数字“2”、“3”......,当遇到为“7”的整数倍数字或含“7”的数字时,该念这个数字的人需要拍手一下并喊“跳过”(不能念出这个数字)。应该拍手并喊“跳过”的人,念出了数字,或者该念数字而拍手或喊“跳过”的人为输,接受惩罚后,游戏重新开始。
书写一个程序,接收用户的一个整数输入,输出从1到这个整数(包含这个整数)间所有应该拍手喊“跳过”的数字。每个数字输出占一行。
输入使用 input() ,不要附加任何参数和提示信息。
输入格式
输入一个整数,使用 input() 函数实现。不要为 input() 函数增加任何参数和提示信息。
输出格式
按行输出结果。具体参阅下方输入输出示例。
输入输出示例
输入 | 输出 | |
示例 1 | |
|
示例 2 | |
|
代码:
n=eval(input()) for i in range(1,n+1): y=str(i) if i%7==0: print(i) elif "7" in y: print(i)
升级版:
n=eval(input()) for i in range(1,n+1): y=str(i) if i%7==0 or"7" in y: print(i)
继续升级:
for i in range(1,eval(input())+1): if i%7==0 or"7" in str(i): print(i)
经验:审题是关键啊!条件有2个:一是7的公倍数,另一个是含7的字符串。