Python 第四次实验
1、(程序设计) 定义函数 def GetRandomChar(),返回一个随机的数字或大写或小写字母,每个符号出现的机会相等。调用该函数 8 次,生成并输出一个 8 位的验证码。用户输入该验证码,如果验证码正确,则显示“欢迎使用本系统”,否则显示“验证码错误,禁止登录”。
import random def GetRandomChar(): key=random.randint(0,61) if(key<10): return str(key) if(key<=35): return chr(ord('a')+key-10) return chr(ord('A')+key-36) key=''; for i in range(8): key=key+GetRandomChar() print('验证码为:{}'.format(key)) key_input=input('请输入验证码:') if key_input==key: print('欢迎使用本系统') else: print('验证码错误,禁止登录')
2、(程序设计) 定义一个函数 def DrawPic(n, char), 它的功能是显示由字符 char 组成的图形,图形上半部分共 n 行,请参考下图。
def DrawLine(space_num,char_num,char): print(' '*space_num,char*(char_num*2-1),sep='') def DrawPic(n,char): for i in range(-n+1,n): DrawLine(abs(i),n-abs(i),char) n=int(input('请输入一个整数:')) ch=input('请输入一个字符:') DrawPic(n,ch)
3、(程序设计)一类完全平方数。输入正整数 a,b,统计并输出 [a,b] 内有多少个数满足(1)是完全平方数(2)至少有两个数字相同。要求定义两个个函数:
(1)判断是否是完全平方数的函数 def IsPerfectSquare(n),当 n 是完全平方数时返回 True,否则返回 False
(2)判断是否有相同数字的函数 def IsSameDigit(n) ,当 n 有相同数字时返回 True,否则返回 False
import math def IsPerfectSquare(n): k=int(math.sqrt(n)) if k**2==n: return True return False def IsSamDigit(n): a=[0]*10 while n>0: x=n%10 n=n//10 if a[x]>0 : return True a[x]=a[x]+1 return False l=int(input('请输入整数 a:')) r=int(input('请输入整数 b:')) ans=0 for i in range(l,r+1): ans=ans+(IsSamDigit(i) and IsPerfectSquare(i)) print('在 [{},{}] 共有 {} 个数满足条件'.format(l,r,ans))
4、(程序设计) 输入一个字符串,找出该字符串出现次数最多的字符。比如,输入 abc12d3ebaa,出现次数最多的字符是 a。如果次数最多的有多个字符,输出任意一个即可。注意:不能用 max,sort,sorted 函数 (本题分数:14)
in_str=input('请输入一个字符串:') ans=[0]*128 for s in in_str: key=ord(s) ans[key]=ans[key]+1 id=0 for i in range(1,128): if ans[i]>ans[id]: id=i print('出现次数最多的字符是 {}'.format(chr(id)))
5、(程序设计) 编写程序,对于输入的字符串,统计每个字符出现的次数,例如输入 aabbccc,则输出 {'a':2, 'b':2, 'c':3}(假定字符串只包含小写字母),要求使用字典结构完成 (本题分数:14)
in_str=input('请输入字符串:') dict={} for s in in_str: if s in dict: dict[s]=dict[s]+1 else: dict[s]=1 print(dict)
6、(程序设计) 编写程序,判断给定的字符串是否是回文串,回文串的定义:字符串第一个字符跟最后一个字符相等,第二个字符跟倒数第二个相等,依次类推。例如 abba 是回文串,aba 也是。而 abc 不是回文串。(本题分数:14)
s=input('请输入字符串:') i=0 j=len(s)-1 while i<j: if s[i]!=s[j]: print('{} 不是回文串'.format(s)) break i=i+1 j=j-1 else: print('{} 是回文串'.format(s))
7、(程序设计) 输入一个整数 n, 生成长度为 n 的列表,将 n 个随机大写字符放入列表中 (本题分数:14)
import random n=int(input('请输入整数 n:')) list=['']*n for i in range(n): list[i]=chr(random.randint(ord('A'),ord('Z'))) print(list)