黑马程序员技术交流社区
标题: 【郑州校区】Python100例基础练习题6 [打印本页]
作者: 我是色色 时间: 2018-4-2 18:03
标题: 【郑州校区】Python100例基础练习题6
例27:
题目:用递归的方法将输入的字符,以相反的方式打印出来。
程序分析:
了解递归特性
1.必须有一个明确的结束条件
2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
1.递归方法
[AppleScript] 纯文本查看 复制代码
def bar(s):
if len(s)>0: #大于0
print(s[-1]) #打印最后一个
bar(s[0:-1]) #返回剩下的字符串
s=input("string>>>") ##输入
bar(s)##s 赋值给函数bar
2.不用递归方法:(这里需要函数reverse())
[AppleScript] 纯文本查看 复制代码
s=input("Input in string>>>").strip()
l=list(s)
l.reverse()
for i in range(len(l)):
print(l)
print(l)
例28
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
程序分析:
逆向思维,假设第1个人岁数是N,那第五个就是N+2+2+2+2
1.没用递归方法
[AppleScript] 纯文本查看 复制代码
def boo(n): ##n=10 ,第一个人岁数
for i in range(1,5): ###用range循环四次,1,2,3,4
n=n+2
print(n)
boo(10)
2.递归方法
[AppleScript] 纯文本查看 复制代码
def age(n):
if n==1:
return 10
if n>1:
return (n-1)*2+10 ##每人间隔两岁,所以第五个跟第一个相差8岁,在加上10得第五人
print(age(5))
例29:
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
程序分析:学会分解出每一位数。
[AppleScript] 纯文本查看 复制代码
n=input("输入五位数字")
for i in range(len(n)-1,-1,-1):
print(len(n),n)
看帮助手册了解range函数用法,看顺便可以提高英语阅读能力。[AppleScript] 纯文本查看 复制代码
Help on class range in module builtins:
class range(object)
| range(stop) -> range object
| range(start, stop[, step]) -> range object
|
| Return an object that produces a sequence of integers from start (inclusive)
| to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1.
| start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3.
| These are exactly the valid indices for a list of 4 elements.
| When step is given, it specifies the increment (or decrement).
|
| Methods defined here:
|
| __bool__(self, /)
| self != 0
|
| __contains__(self, key, /)
| Return key in self.
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __iter__(self, /)
| Implement iter(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __new__(*args, **kwargs) from builtins.type
| Create and return a new object. See help(type) for accurate signature.
|
| __reduce__(...)
| helper for pickle
|
| __repr__(self, /)
| Return repr(self).
|
| __reversed__(...)
| Return a reverse iterator.
|
| count(...)
| rangeobject.count(value) -> integer -- return number of occurrences of value
|
| index(...)
| rangeobject.index(value, [start, [stop]]) -> integer -- return index of value.
| Raise ValueError if the value is not present.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| start
|
| step
|
| stop
例30:
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
程序分析:所谓回文数字,其实就是一个数等于它的相反数,这是只要能将输入内容相反一下等于本身即是回文数。
[AppleScript] 纯文本查看 复制代码
x=input("Please number:")
y=x[::-1] ####y=x的倒数,当x输入12345,x[::-1] == 54321
if x==y:
print("回文数",x)
else:
print("非回文数",y)
经验总结:一个程序的难易度往往在于你的分析能力,能否一针见血直至核心很关键,这个还是需要多多练习才醒。
作者: loveheima008 时间: 2018-4-2 20:25
怎么才能下载所有的题库呢
作者: huchengdong 时间: 2018-4-11 15:25
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
作者: 我是色色 时间: 2018-4-23 14:52
你想下载哪部分呢?
作者: 青春不容你奢侈 时间: 2018-5-16 21:19
怎么能把这100题全部打包下载下来,正在学python想试试看自己基础知识学的怎么样!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |