python语言程序设计_梁勇—第六章练习题重点题目答案

1、(数学方面:五角数)一个五角数被定义为n(3*n-1)/2,其中n = 1、2、…。所以,开始的数为5、12、22,编写一个函数返回五角数

编写一个程序来使用这个函数前100个五角数,每行显示10个

def getPentagonalNumber(n):
    count = 0
    for n in range(1,n+1):
        count += 1
        PentagonalNumber = int(n*(3*n - 1)/2)
        print(PentagonalNumber, end=" ")
        if count % 10 == 0:
            print(PentagonalNumber,end="\n")
if __name__ == '__main__':
    getPentagonalNumber(100)

2、(回文整数)编写下面带函数头的函数,使用函数reverse实现isPalindrome,如果一个数的反向数和它的正向数一样,则这个数为回文数。

def reverse(number):
    a = number % 10  # 个位
    b = (number % 100) // 10  # 十位
    c = number // 100
    reverse_number = int(str(a)+str(b)+str(c))
    return reverse_number

def isPalindrome(number):
    if reverse(number) == number:
        print("%d 是回文整数"%number)
    else:
        print("%d 不是回文整数"%number)
if __name__ == '__main__':
    numberofDaysInAYear(121)

3、(一年的天数)使用下面的函数头编写一个函数,返回一年的天数

def leapYear(year):
        if (year % 4 == 0 and year % 100 != 0)or(year % 400 == 0):
            return 366
        else:
            return 365

def numberofDaysInAYear(a,b):
    for i in range(a,b+1):
        print("%d 年有%d天"%(i,leapYear(i)))
if __name__ == '__main__':
    numberofDaysInAYear(2010,2020)

4、(回文素数) 回文素数是指一个数即是素数又是回文数,编写程序显示前100个回文素数,每行显示10个数字,并且准确对齐

def isprime(number):
    for i in range(2,number):
        if number % i == 0:
            return False
    else:
        return True

def isPalindrome1(number):
    if reverse(number) == number:
        return True
    else:
        return False

def Palindrome_primes(number):
    count = 0
    for i in range(1,number+1):

        if isPalindrome1(i) and isprime(i):
            print(i,end="  ")
            count += 1
            if count % 10 == 0:
                print("",end="\n")
        else:
            continue
if __name__ == '__main__':
    Palindrome_primes(1000)

5、(财务应用程序:信号卡号的合法性) 信用卡号遵循下面的模式:一个信用卡号必须是13位到16位的整数,它的开头必须是: 4 是指Visa卡,5是指Master卡,37是指American Express卡,6是指Discover卡,采用Luhn检测或Mod 10检测

def sumOfDoubleEvenPlace(number):
    str_number = str(number)
    sum_total = 0
    sum0 = 0
    sum1 = 0
    for i in range(0,len(str_number),2):
        if int(str_number[i]*2)< 10:
            sum0 += int(str_number[i])*2
        else:
            a = int(str_number[i])*2 # 将两位数十位和个位相加
            b = a // 10
            c = a % 10
            sum0 += (b + c)

    for i in range(1,len(str_number),2):
        sum1 += int(str_number[i])

    sum_total = sum0 + sum1
    print(sum_total)
    return sum_total

def isValid(number):
    if sumOfDoubleEvenPlace(number) % 10 == 0:
        print("卡号 %d 是合法的" % number)
        return True
    else:
        print("卡号%d不是合法的" % number)
        return False
if __name__ == '__main__':
    isValid(43542245234524524542435)

6、(当前的日期和时间)调用time.time()返回从1970开始的毫秒数。编写程序显示日期和时间

import time
import datetime

def show_current_time():
    time_zone = eval(input("Enter the time zone:"))
    current_time = time.time() # 获取当前时间
    total_senconds = int(current_time)
    current_sencond = total_senconds % 60
    total_minutes = total_senconds // 60
    current_minute = total_minutes % 60
    total_hours = total_minutes // 60
    current_hour = total_hours % 24
    china_curent_hour = current_hour + time_zone
    print("current time is ", china_curent_hour,':',current_minute,":",
          current_sencond,'China')

    print(datetime.datetime.now())
    
if __name__ == '__main__':
    show_current_time()

  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值