赞
踩
答案不全,仅把本人敲出结果的代码整理如下。大部分为本人思路,部分代码参考了网上文章,初学水平有限,若有错误请读者指出,感谢。
第二章 Python语言基本语法元素
2.1获得用户输入的一个整数N,计算并输出N的32次方。
N=eval(input('请输入'))
a=N**32
print("它的32次方是"+str(a))
2.2获得用户输入的一段文字,将这段文字进行垂直输出。
s=input("请输入一段文字:")
i=0
while i<len(s):
print(s[i])
i=i+1
2.3获得用户输入的一个合法算式,例如:1.2+3.4,输出运算结果。
a=input("输入一个带数算式:")
b=eval(a)
print("结果为:"+str(b))
2.4获得用户输入的一个小数,提取并输出其整数部分。
a=input("请输入一个小数:")
l=len(a)
i=0
while i<l:
print(a[i],end='')
i=i+1
if a[i]=='.':
break
2.5修改之后的代码如下:
n=eval(input("请输入整数N:"))
sum=0
for i in range(n):
sum+=i+1
print("1到N求和结果:{}".format(sum))
修改的地方:
1.要将input的字符串数字化
2.行末分号最好去掉
3.for后面加冒号
4.最后一行少了一个format对应的槽位置{}
第三章 基本数据类型
3.1获得用户输入的一个整数,输出该整数百位以上的数字。
a=input("请输入一个整数:")
b=eval(a)
if type(b)==type(1234):
l=len(a)-2
c=a[:l]
print(c)
else:
print("请输入一个整数!")
3.2获得用户输入的一个字符串,将字符串按照空格分隔,然后逐行打印出来。
s=input("请输入一个字符串:")
a=s.split()
l=len(a)
for i in range(l):
print(a[i])
3.3程序读入一个表示星期几的数字(1—7),输出对应的字符串名称。例如:输入3,返回“星期三”。
a=eval(input("请输入一个1—7的数字:"))
b=["一","二","三","四","五","六","日"]
print("星期"+b[a-1])
3.4设n是一任意自然数,如果n的各位数字反向排列所得自然数与n相等,则n被称为回文数。从键盘输入一个5位数字,请编写程序判断这个数字是不是回文数。
a=input("请输入一个5位自然数:")
b=a[::-1]
if a==b:
print("此数是回文数!")
else:
print("此数不是回文数!")
3.5输入一个十进制整数,分别输出其二进制,八进制,十六进制字符串。
s=eval(input("输入一个十进制整数:"))
print("二进制:{:b}".format(s))
print("八进制:{:o}".format(s))
print("十六进制:{:X}".format(s))
第四章 程序的控制结构
4.1输入一个年份,输出是否为闰年。(闰年:能被4整除但不能被100整除,或者能被400整除的年份都是闰年)
while True:
s=input('请输入一个年份:(输入q退出)')
if s=='q':
break
else:
try:
a=eval(s)
except:
print('请输入数字表示的年份!')
continue
if (a%4==0 and a%100!=0)or a%400==0:
print('此年份是闰年!')
else:
print('此年份不是闰年!')
4.2最大公约数计算。获得两个整数,求出这两个整数的最大公约数和最小公倍数。最大公约数的计算一般使用辗转相除法,最小公倍数使用两个数的乘积除以最大公约数。
先放个例子理解一下辗转相除法:
假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的:
1997 / 615 = 3 (余 152)
615 / 152 = 4(余7)
152 / 7 = 21(余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 / 1 = 2 (余0)
至此,最大公约数为1
以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 1997 和 615 的最大公约数 1。
a=eval(input('请输入一个数:')) b=eval(input('请输入另一个数:')) d=a*b if a>b: while a%b!=0: c=a%b a=b b=c e=int(d/b) print('两个数的最大公约数为:'+str(b)+'\n两个数的最小公倍数为:'+str(e)) elif a<b: while b%a!=0: c=b%a b=a a=c e=int(d/a) print('两个数的最大公约数为:'+str(a)+'\n两个数的最小公倍数为:'+str(e)) else: print('最大公约数与最小公倍数都是'+str(a))
4.3统计不同字符个数。用户从键盘键入一行字符,编写一个程序,统计并输出其中英文字符,数字,空格和其他字符的个数。
symble=input('Enter your words:') number=letter=space=other=0 i=0 for i in range(len(symble)): if 'a'<=symble[i]<='z' or 'A'<=symble[i]<='Z': letter+=1 elif '0'<=symble[i]<='9': number+=1 elif symble[i]==' ': space+=1 else: other+=1 print('letter:'+str(letter)+' number:'+str(number)+' space:'+str(space)+' other:'+str(other))
4.4猜数游戏续。当用户输入的不是整数(如字母,浮点数)时,程序会终止执行退出。改编题目1中的程序,当用户输入出错时给出“输入内容必须为整数!”的提示,并让用户重新输入。
import random target=random.randint(1,1000) count=0 while True: try: guess=eval(input('请输入一个猜测的整数(1至1000):')) except: print('输入内容必须为整数!此次不计数猜测次数!')#解决输入不是数字的问题 continue if type(guess)!=type(1): print('输入内容必须为整数!此次不计数猜测次数!')#解决输入是浮点数的问题 continue count=count+1 if guess<target: print('猜小了') elif guess>target: print('猜大了') else: print('猜对了') break print('此次猜测的次数为:'+str(count))
5.羊车门问题。有三扇关闭的门,一扇门后停着汽车,blabla。。。。。。请使用random库对这个随机事件进行预测,分别输出参赛者改变选择和坚持选择获胜的概率。
这个问题我之前有一篇帖子阐述了一下帮助理解,下面代码原理看不懂的或者对这个问题有兴趣的可以看看,这里不赘述了,直接上代码:
import random n=10000 success_time=0 fail_time=0 for i in range(n): car_location=random.randint(1,3) my_choose=random.randint(1,3) if my_choose==car_location: fail_time+=1 else: success_time+=1 s=success_time/10000 f=fail_time/10000 print('换后成功概率为:'+str(s)) print('换后失败概率为:'+str(f))
第五章 函数和代码复用
5.1实现isNum()函数,参数为一个字符串,如果这个字符串属于整数,浮点数或者复数的表示,则返回True,否则返回False。
a=input("请输入数字")
def isnum(a):
try:
n=eval(a)
if type(n)==float or type(n)==int or type(n)==complex:
print('True')
else:
prit('False')
except:
print('False')
isnum(a)
5.2实现isNum()函数,参数为整数,要有异常处理。如果整数是质数,返回True,否则返回False。
from math import sqrt def is_prime(a): try: n=eval(a) if type(n)!=type(1): print('请确认您输入的是整数!')#保证输入是整数 else: if n==1: return False for i in range(2,int(sqrt(n))+1): if n%i==0: return False return True except: print('请确认您输入的是数字!')#保证输入是数字 while True: a=input('请输入一个整数,键入“q”退出:') if a=='q': break else: print(is_prime(a))
5.3编写一个函数计算传入字符串中数字,字母,空格以及其他字符的个数。
def tongji(): str1=input('请输入一个字符串:') zimu=shuzi=kongge=qita=0 for p in str1: if 'a'<=p<='z' or 'A'<=p<='Z': zimu+=1 elif '0'<=p<='9': shuzi+=1 elif p==' 'or p==' ': kongge+=1 else: qita+=1 print('字母{},数字{},空格{},其他{}'.format(zimu,shuzi,kongge,qita)) tongji()
5.4编写一个函数,打印200以内的所有素数,以空格分割。
from math import sqrt
def is_prime():
for i in range(2,201):
a=1
for j in range(2,int(sqrt(i))+1):
if i%j==0:
a=a*0
else:
a=a*1
if a==1:
print(i,end=' ')
is_prime()
5.5编写一个函数,参数为一个整数n。利用递归获取斐波那契数列中的第n个数并返回。
def fb(n):
a,b=1,1
count=0
while(count!=n-2):
a,b=b,a+b
count+=1
return b
n=eval(input('您想返回第几个数:'))
print(fb(n))
第六章 组合数据类型
6.1英文字符频率统计。编写一个程序,对给定字符串中出现的a–z字母频率进行分析,忽略大小写,采用降序方式输出。
txt=input("请输入一段英文文本:")
txt=txt.lower()
count={}
for word in txt:
if word in "abcdefghijklmnopqrstuvwxyz":
count[word]=count.get(word,0)+1
items=list(count.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(len(items)):
word,count=items[i]
print("{0:<10}{1:>5}".format(word,count))
6.2中文字符频率统计。编写一个程序,对给定字符串中出现的全部字符(含中文字符)频率进行分析,采用降序方式输出。
txt=input("请输入一段文本:")
txt=txt.lower()
count={}
for word in txt:
#if word in "abcdefghijklmnopqrstuvwxyz":
count[word]=count.get(word,0)+1
items=list(count.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(len(items)):
word,count=items[i]
print("{0:<10}{1:>5}".format(word,count))
#首先:‘我的{0}叫{1}’.format(name,jack),大括号里的数字,表示的是位置,也就是0对应的name,1对应的jack。同理,题中0对应的是Word,1对应的是count。
#其次,冒号是引导符,后面跟的是格式控制方法。<表示左对齐,>表示右对齐,数字表示宽度。同理,题中<10表示左对齐,并占10个位置,>5表示右对齐,占5个位置。
6.3随机密码生成。编写程序在26个字母大小写和9个数字组成的列表中随机生成10个8位密码。
import random
txt='1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
the_list=list(txt)
for i in range(10):
password=''
for j in range(8):
password+=random.choice(the_list)
print(password)
6.5重复元素判定续。利用集合的无重复性改编上一个程序,获得一个更快更简洁的版本。
def test(lis):
tem=set(lis)
if len(tem)<len(lis):
return True
else:
return False
def getlist():
lis=list(input("请输入判定元素,回车表示结束:"))
print(test(lis))
getlist()
既然更快更简洁了那6.4就不要了哈哈哈
第七章 文件和数据格式化
7.1输入一个文件和一个字符,统计该字符在文件中出现的次数。
def countstr(filename,str1): filenames=filename+".txt" f=open(filenames,'r') count=0 for line in f: for i in line: if i==str1: count+=1 print("'{}'字符在'{}'中出现的次数是'{}'".format(str1,filename,count)) def main(): filename=input("请输入文件名称:") str1=input("请输入需要统计的字符:") countstr(filename,str1) main()
7.2假设有一个英文文本文件,编写一个程序读取其内容并将里面的大写字母变成小写字母,小写字母变成大写字母。
def transform(filename): file=filename+".txt" f=open(file,"r+") fn=open("{}转化后.txt".format(filename),"w") for line in f: for word in line: if word in "qwertyuiopasdfghjklzxcvbnm": word=word.upper() elif word in "QWERTYUIOPASDFGHJKLZXCVBNM": word=word.lower() fn.write(word) f.close fn.close def main(): filename=input("请输入文件名称:") transform(filename) main()
7.3编写一个程序,生成一个10*10的随机矩阵并保存为文件(空格分隔行向量,换行分隔列向量),再写程序将刚才保存的矩阵文件另存为CSV格式,用Excel或文本编辑器打开看看结果对不对。
import random def s_txt(low,high,txtname): f=open("{}.txt".format(txtname),"w") for line in range(10): word="" for row in range(10): word=word+str(random.randrange(low,high))+" " f.write(word+"\n") f.close() def s_csv(txtname,csvname): f1=open("{}.txt".format(txtname),"r") f2=open("{}.csv".format(csvname),"w") for line in f1: after=line.replace(" ",",") f2.write(after) f1.close() f2.close() def main(): low,high=eval(input("请输入随机数下限low、上限high,并用逗号隔开:")) txtname=input("请输入txt文件名:") s_txt(low,high,txtname) csvname=input("请输入csv文件名:") s_csv(txtname,csvname) main()
7.5编写一个程序,要求能够将元素为任意Python支持的类型(包括含有半角逗号的字符串)的列表转储为CSV,并能够重新正确解析为列表。
def save_csv(ls, fname): # 向列表中逐个添加元素 value = input('请向列表总添加一个元素:') while value != '': ls.append(value) value = input('请向列表总添加一个元素:') print('您输入的列表为:{}'.format(ls)) # 若元素中有半角逗号,将其替换成点 for i in range(len(ls)): if ',' in ls[i]: ls[i] = ls[i].replace(',', '.') file_csv = open('{}.csv'.format(fname), 'w', encoding='utf-8') file_csv.write(','.join(ls) + '\n') file_csv.close() print('恭喜!已成功保存<{}.csv>文件!'.format(fname)) def read_csv(lt, fname): f = open('{}.csv'.format(fname), 'r', encoding='utf-8') lt = f.read().strip('\n').split(',') # 将替换后的点换成半角逗号 for i in range(len(lt)): if '.' in lt[i]: lt[i] = lt[i].replace('.', ',') f.close() print('<{}.csv>文件读取中...'.format(fname)) print(lt) def main(): ls = [] fname = input('请将列表文件命名:') save_csv(ls, fname) lt = [] read_csv(lt,fname) main()
完结撒花
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。