python编程案例教程课后题(python编程案列教程)
Python编程题:输入圆半径,输出圆面积
R=eval()(input("请输入圆的半径:"))
pi=3.14
S=pi*R**2
print("圆的面积是:{}".format(S))
如果需要更精确的面积,可调用math库,即可获得更精确的答案。
扩展资料:
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
以下是 eval() 方法的语法:
eval(expression[, globals[, locals]])
参数:
expression -- 表达式。
globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
参考资料来源:百度百科-eval()
Python编程题求助
该答案为组合数学中著名的卡特兰数,其通式为C(2n,n)-C(2n,n-1)
这里采用递推关系求解,即动态规划的方法
设n对父子有d[n]种出场策略,注意初值d[0]=1
因为每个孩子前面必有一个父亲与之对应
对于i对父子,遍历第j个孩子,该孩子前面有j-1个孩子,对应d[j-1]种出场策略
后面有i-j个孩子,对应d[i-j]种出场策略,则d[i]+=d[j-1]*d[i-j],最终d[n]即为所求
python代码如下:
n = int(input())
d = [0] * (n+1)
d[0] = 1
for i in range(n+1):
? for j in range(i+1):
? ? ? d[i] += d[j-1] * d[i-j]
print(d[n])
运行结果如下:
望采纳~
2021-01-20 python编程题(1/100)
问题:编写一个程序,它将找到所有这些数字,可被7整除,但不是5的倍数,2000年至3200年(包括在内)。得到的数字应按逗号分隔的顺序打印在一行上(1级)
方法:使用for循环+if语句+join()+append()
'''
def number():
num_list = []
for i in range(2000,3201):
if i %7 == 0 and i %5 != 0:
num_list.append(str(i))
num = ','.join(num_list)
return num
if name == ' main ':
print(number())
'''
容易错的点:由于循环取的int类型,而join()只能处理str等可迭代类型,因此需要将i转换为str类型,否则会报错
求一份鱼C工作室,python 课后测试题及答案!!
1,使用getopt。getopt()优化当前的功能函数:
[html]
#!/usr/bin/python
# -*- coding: utf-8 -*-
#coding=utf-8
import os,sys
import getopt
print sys.argv
CDROW='/home/zhouqian/test'
def cdWalker(CDROW,cdfile):
result=[]
for root,dirs,files in os.walk(CDROW):
result.append("%s %s %s" %(root,dirs,files))
print root
open(cdfile,'w').write('\n'.join(result))
def usage():
print '''pycdc 使用方式:
python cdays-3-exercise-1.py -d cdc -k 中国火
#检索cdc中有没有中国火字样的目录,
'''
try:
opts,args=getopt.getopt(sys.argv[1:],'hd:e:k:')
except getopt.GetoptError:
usage()
sys.exit()
if len(opts)==0:
usage()
sys.exit()
c_path=''
name=''
for opt,arg in opts:
if opt in('-h','--help'):
usage()
sys.exit()
elif opt=='-e':
if os.path.exists(arg):#判断目标路径是否存在
# cdWalker(CDROW,arg)
print "记录光盘的位置是 %s" %arg
else:
print "不存在这样的目录"
elif opt=='-d':
c_path=arg
print c_path
cdWalker(CDROW,c_path)
elif opt=='-k':
if not c_path:
usage()
sys.exit()
else:
name=arg
for root,dirs,files in os.walk(c_path):
if root=='%s' %name:
print '您要找的文件在%s' %dirs
这是第一个题,大概做了2个小时吧,各种纠结啊,后面两个正在做。中间遇到的问题总结:
函式的利用,os.path.walk,python字符集,getopt模块的使用学习,os.path.exists()的利用,列表的对应关系等等
习题2 :关键词-----》序列号问题:
[html]
#!/usr/bin/python
#coding=utf-8
import sys
def collect(file):
result={}
for line in file.readlines():
left,right=line.split()
if result.has_key(right):
result[right].append(left)
else:
result[right]=[left]
return result
if __name__=="__main__":
print sys.argv
if len(sys.argv)==1:
print 'usage:\tpython value_keys.py test.txt'
else:
result=collect(open(sys.argv[1],'r'))
for (right,left) in result.items():
print "%d %s = %s" %(len(left),right,left)
结果显示:
[html]
root@zhou:/home/zhouqian/python# py value_keys.py test.txt
ssss
2 key3 = ['6', '33']
3 key2 = ['1', '2', '45']
3 key1 = ['4', '5', '13']
遇到的问题总结:
split的用法:line.split()就是分开出左右两边的值,在默认的情况下是以一个空格或者多个空格为分割符的,
has_key()的用法:是查看字典数据类型中有没有这么一个关键字。上面可知result={}是初始化了一个字典的数据类型。
字典的一些用法:怎么定义,怎么赋值:result[right]=[left]或者result[right]=left,遍历字典中所用
项,result.items(),遍历字典的key值:result.keys(),遍历字典的value值:result.values()
[html]
dict={'chen':25,'zhou':24,'xiao':35}
dict.values()
[25, 35, 24]
dict.keys()
['chen', 'xiao', 'zhou']
dict.items()
[('chen', 25), ('xiao', 35), ('zhou', 24)]