我的方法:
每一章先看书,了解知识点
然后做习题,做习题时一定要先自己做,上网只搜索相关知识点和某个函数或方法的使用,写好代码之后,再看其他人的代码做参考。
第3章 基本数据结构
1.获得用户输入的一个整数,输出该整数百位及以上的数字
#该题很重要一点就是判断用户输入的数字是否是一个三位及三位以上的整数。
#还有就是怎么取出百位及以上的数字。
方法一:就是将整数除以100,然后用int()向下取整
n=eval(input("请输入一个整数:"))
if n<100:
print("请输入一个大于99的整数")
print(int(n/100))
方法二:
参考张采灵Flameny 的方法,她的代码逻辑很清晰,有需求可以看看。
她将输入的整数作为字符串处理,然后取首位到倒数第三位的字符串,即[0:-2]。
n=input("please enter an integer:")
if len(n)<3:
print("please enter an integer bigger than 99")
else:
result=n[0:-2]
print(result)
2.获得用户输入的一个字符串,将字符串按照空格分割,然后逐行打印出来。
思路:看到这道题,“空格分隔”,我首先想到 str.split(sep=None) 字符串处理方法。so my first code looks like this
s=input("please enter a character string")
l=s.split()#split()分隔后的内容一列表类型返回
for i in range(len(l)):
print(l[i])
我输入一段字符串“i want to learn programming well”,运行结果
还蛮成功的,然后用母语中文试一下,“我想学好编程”,运行结果
好像哪里不对,题目要求“逐行打印”,所以对比一下中英文,原来英文每个单词之间有空格,中文字符之间没有空格,得加空格,用 str.join(iter) 方法。
s=input("please enter a character string:")
j=" ".join(s)
l=j.split(j)
for i in range(len(l)):
print(l[i])
输入一串中文“我想学好编程”,运行一下:
再看一下这次英文结果如何?
- 分析:第一种可能:要再加一条条件语句,判断用户输入的是自带空格的还是不自带空格的。
第二种可能:是不是理解错题意了,如果没有空格,分割时只返回一个元素的列表,也就只打印一行。
再参考一下张采灵Flameny 的代码:
s=input("please enter a sentence")
m=s.split()
for i in m: #for循环可以**遍历字符串**
print(i)
3.程序读入一个表示星期几的数字(1-7),输出对应的星期字符串名称。例如输入3,返回“星期三”。
方法一:
n=eval(input("please enter a number in range of 1 to7:"))
if n==1:
s="一"
elif n==2:
s="二"
elif n==3:
s="三"
elif n==4:
s="四"
elif n==5:
s="五"
elif n==6:
s="六"
else:
s="日"
print("星期{}".format(s))
方法二:
l=["一","二","三","四","五","六","日"]
i=int(input("请输入一个表示星期几的数字(1—7):"))
s=l[i-1]
print("星期{}".format(s))
或者
week=["","星期一","星期二","星期三","星期四","星期五","星期六","星期日"]
i=int(input("请输入一个表示星期几的数字(1—7):"))
print(week[i])
方法三:
若学到字典,可以用以下方式
weeks={
'1':'星期一','2':'星期二',
'3':'星期三','4':'星期四',
'5':'星期五','6':'星期六',
'7':'星期日'
}
n=input("请输入一个表示星期几的数字(1—7):")
print(weeks.get(n)) #用get()获取字典了key对应的value
4.设n是一任意自然数,如果n的各位数字反向排列所得自然数与n相等,则n被称为回文数。从键盘输入一个5位数字,请编写程序判断这个数字是不是回文数。
思路:“121”,“12321”这样的数字就是回文数。
方法一:还记得“倒背如流”吗?将数字的倒叙方式输出,然后再与原数字比较,相等则是回文数。该方法适合任意长度的数字。
n=input("请输入一个5位的自然数:")
i=len(n)-1
s=""
while i>=0:
s=s+n[i]
i=i-1
if s==n:
print("{}是回文数".format(n))
else:
print("{}不是回文数".format(n))
方法二:依次比较这个数字的首位字符数的大小。
m=input("请输入一个5位数:")
if m[0]==m[4] and m