Python编程练习(三):21 - 30

零基础入门学Python系列内容对应的所有编程练习题目 → \rightarrow Python编程练习题目汇总

  1. 编写程序:判断传入的字符串参数是否为“回文联”。回文联即用回文形式写成的对联,既可顺读,也可倒读。
def palindrome(string):
    length = len(string)
    last = length - 1
    length //= 2
    flag = 1
    for each in range(length):
        if string[each] != string[last]:
            flag = 0
        last -= 1

    if flag == 1:
        return 1
    else:
        return 0

string = input('请输入一句话:')
if palindrome(string) == 1:
    print('是回文联!')
else:
    print('不是回文联!')

  >>>
  请输入一句话:一二三
  不是回文联!
  请输入一句话:一二三三二一
  是回文联!
  >>>

  1. 编写程序:判断传入的字符串参数是否为“回文联”(递归实现)。
def Huiwen(temp,start,end):
    if start > end:
        return 1
    else:
        if temp[start]==temp[end]:
            return Huiwen(temp,start+1,end-1)
        else:
            0

temp = input('请输入一段文字:')
length = len(temp)
end = len(temp)-1
if Huiwen(temp,0,end):
    if temp[0:length//2] == temp[length//2:length]:
        print('%s不是一个回文字符串!'%temp)
    else:
        print('%s是一个回文字符串!'%temp)
else:
    print('%s不是一个回文字符串!'%temp)

  >>>
  请输入一段文字:一二三
  一二三不是一个回文字符串!
  请输入一段文字:一二三二一
  一二三二一是一个回文字符串!
  >>>

  1. 编写程序:分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数。
def count(*param):  
    length = len(param)  
    for i in range(length):  
        word = 0  
        num = 0  
        spa = 0  
        oth = 0  
        for j in param[i]:  
            if j.isalpha():  
                word += 1  
            elif j.isspace():  
                spa += 1  
            elif j.isdigit():  
                num += 1  
            else:  
                oth += 1  
        print ('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个'%(i+1,word,num,spa,oth))

count('I love Python','I love you')

  >>>
  第 1 个字符串共有:英文字母 11 个,数字 0 个,空格 2 个,其他字符 0 个
  第 2 个字符串共有:英文字母 8 个,数字 0 个,空格 2 个,其他字符 0 个
  >>>

  1. 编写程序:求某个整数的阶乘。
def recursion(n):
    result = n
    for i in range(1,n):
        result *= i
    return result

number = int(input('请输入一个整数:'))
result = recursion(number)
print("%d的阶乘是:%d" % (number,result))

  >>>
  请输入一个整数:4
  4的阶乘是:24
  请输入一个整数:12
  12的阶乘是:479001600
  >>>

  1. 编写程序:求某个整数的阶乘(递归实现)。
def factorial(n):
     if n == 1:
         return 1
     else:
        return n * factorial(n-1)

number = int(input('请输入一个整数:'))
result = factorial(number)
print("%d的阶乘是:%d" % (number,result))

  >>>
  请输入一个整数:5
  4的阶乘是:120
  >>>

  1. 编写程序:实现斐波那契数列(迭代实现)。
def fab(n):
    a1 = 1
    a2 = 1
    a3 = 1
    if n < 1:
        print("输入有误!")
        return -1
    while (n-2) > 0:
        a3 = a1 + a2
        a1 = a2
        a2 = a3
        n -= 1
    return a3

n=int(input("请输入经过的月份:"))
result = fab(n)
if result != -1:
    print('总共有%d对小兔子诞生!'% result)

  >>>
  请输入经过的月份:5
  总共有5对小兔子诞生!
  请输入经过的月份:7
  总共有13对小兔子诞生!
  请输入经过的月份:10
  总共有55对小兔子诞生!
  >>>

  1. 编写程序:实现斐波那契数列(递归实现)。
def fab(n):
    if n < 1:
        print("输入有误!")
        return -1
    if n == 1 or n == 2:
        return 1
    else:
        return fab(n-1) + fab(n-2)

n=int(input("请输入经过的月份:"))
result = fab(n)
if result != -1:
    print('总共有%d对小兔子诞生!'% result)

  >>>
  请输入经过的月份:10
  总共有55对小兔子诞生!
  >>>

  1. 编写程序:将参数n分解出每个位的数字并按顺序存放到列表中。
# 写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例 : get_digits(12345)==>[1,2,3,4,5]
def get_digits(n):
    result = ''
    if n:
        result = get_digits(n//10)
        result += str(n%10)
    return list(result)

num = int(input('请输入一个数:'))
print(get_digits(num))

  >>>
  请输入一个数:350
  [‘3’, ‘5’, ‘0’]
  请输入一个数:1890
  [‘1’, ‘8’, ‘9’, ‘0’]
  >>>

  1. 编写程序:实现一个用户登录系统。
user_data = {}

def new_user():
    prompt = '请输入用户名:'
    while True:
        name = input(prompt)
        if name in user_data:
            prompt = '此用户名已被使用,请重新输入:'
            continue
        else:
            break

    passwd = input('请输入密码:')
    user_data[name] = passwd
    print('注册成功,赶紧试试登录吧^_^')

def old_user():
    prompt = '请输入用户名:'
    while True:
        name = input(prompt)
        if name not in user_data:
            prompt = '您输入的用户名不存在,请重新输入:'
            continue
        else:
            break

    passwd = input('请输入密码:')
    pwd = user_data.get(name)
    if passwd == pwd:
        print('欢迎进入系统!')   
    else:
        print('密码错误!')
            
def showmenu():
    prompt = '''
|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 退出程序:Q/q ---|
|--- 请输入指令代码:'''

    while True:
        chosen = False
        while not chosen:
            choice = input(prompt)
            if choice not in 'NnEeQq':
                print('您输入的指令代码有误,请重新输入:')
            else:
                chosen = True
        if choice == 'q' or choice == 'Q':
            break
        if choice == 'n' or choice == 'N':
            new_user()
        if choice == 'e' or choice == 'E':
            old_user()

showmenu()

  >>>
  |— 新建用户:N/n —|
  |— 登录账号:E/e —|
  |— 退出程序:Q/q —|
  |— 请输入指令代码:n
  请输入用户名:lucky
  请输入密码:123456
  注册成功,赶紧试试登录吧 ^ _ ^

  |— 新建用户:N/n —|
  |— 登录账号:E/e —|
  |— 退出程序:Q/q —|
  |— 请输入指令代码:e
  请输入用户名:lucky
  请输入密码:123456
  欢迎进入系统!

  |— 新建用户:N/n —|
  |— 登录账号:E/e —|
  |— 退出程序:Q/q —|
  |— 请输入指令代码:q
  >>>

  1. 编写程序:接受用户的输入并保存为新的文件。
def file_write(file_name):
    f = open(file_name,'w')
    print('请输入内容【单独输入\':w\'保存退出】:')

    while True:
        write_some = input()
        if write_some != ':w':
            f.write('%s\n' % write_some)
        else:
            break

    f.close()

file_name = input('请输入文件名:')
file_write(file_name)

  >>>
  请输入文件名:story.txt
  请输入内容【单独输入’:w’保存退出】:
  从前有座山,
  山上有座庙,
  庙里有个老和尚在给小和尚讲故事,
  讲的故事是:
  从前有座山,
  山上有座庙,
  庙里有个老和尚在给小和尚讲故事,
  讲的故事是。。。。。。
  :w
  >>>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值