求解一道Python编程题(求代码)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求解一道Python编程题(求代码)相关的知识,希望对你有一定的参考价值。

能否组成三角形
判断三条线段能否构成一个三角形,需要满足两条规则:

三角形的三条边长必须大于零。
任意两边之和必须大于第三边。
请用程序实现
用函数判断三个数字能否构成三角形,并将判断结果返回。

函数定义
def is_triangle (a, b, c):
pass
参数说明
a, b, c均为整数。

返回值说明
三角形三边长必须大于零,不满足则返回数字-1,表示数据不合法;
任意两边之和必须大于第三边:
不满足则返回数字0,表示不能组成三角形;
满足则返回数字1,表示能组成三角形。
示例
a b c 返回值
0 1 1 -1
1 -1 1 -1
1 1 2 0
3 4 5 1
任务与要求
必做
15 分
编写完善 is_triangle 函数
传入的三边长大于零,且任意两遍之和大于第三边时,返回数字 1
传入的三边长大于零,但不满足任意两遍之和大于第三边时,返回数字 0
传入的三边长小于等于零时,返回数字 -1

参考技术A

你好!

希望对你有帮助!

追问

你好,我现在想通过input

输入获取这三个参数值

程序运行没有问题,但是一提交的时候就报错

ValueError: could not convert string to float:

无法将字符串转化为float怎么解决,我的输入input代码写的有问题吗?

谢谢

追答

你好!
这个应该是输入参数的问题。

本回答被提问者采纳

python 编程 求答案!2、3两题

参考技术A #!/usr/bin/env python
#coding=utf-8
import re
from datetime import datetime as dt, timedelta
import platform

if platform.python_version()[:1] == '2': #判断python版本是2还是3
    import sys
    reload(sys)
    sys.setdefaultencoding('utf8')

class Idcard(object):
    ''' 
    >>> m = Idcard('225122198611134730')
    >>> print(m.sex)
    男
    >>> m.birth
    '1986-11-13'
    >>> m.age
    30
    '''
    def __init__(self,idcard):
        self.idcard = idcard        
        if len(idcard) == 15:
            sex, birth = idcard[-1:], '19' + idcard[6:12]
        elif len(idcard) == 18:
            sex, birth = idcard[-2:-1], idcard[6:14]   
        else:
            raise Exception('len(idcard) is  (15/18)'.format(len(idcard)))
        self._sex = int(sex) % 2
        self._birth = birth
    
    @property
    def sex(self):
        return u'男' if self._sex % 2 else u'女'

    @property
    def age(self):  
        now, bir = dt.now(), dt.strptime(self._birth, '%Y%m%d')
        beforebirth = (now - dt(now.year, bir.month, bir.day)).days < 0
        return dt.now().year - int(self._birth[:4]) - beforebirth

    @property
    def birth(self):
        return dt.strptime(self._birth, '%Y%m%d').strftime('%Y-%m-%d')

def alignment(str1, space, align = 'left'):
    length = len(str1.encode('gb2312'))
    space = space - length if space >=length else 0
    if align == 'left':
        str1 = str1 + ' ' * space
    elif align == 'right':
        str1 = ' '* space +str1
    elif align == 'center':
        str1 = ' ' * (space //2) +str1 + ' '* (space - space // 2)
    return str1
    
def main():
    fname = 'customer.txt'
    '''
    with open(fname, 'w') as f:
        f.write("""
        郑文杰 225122198611134730
        文萍 225122198912094740
        郑妈妈  225122590303476
        郑爸爸 225122560506471
        """)
    '''    
    newf = 'ourcustomers.txt'
    with open(fname) as f:
        s = f.readlines()
    L, newL = [re.split(r'\\s+', i.strip()) for i in s], []
    for i in L:
        if len(i) == 2:
            g = Idcard(i[1])
            newL.append(''.format(
                alignment(i[0], 10), alignment(g.sex, 8), g.age))
    with open(newf, 'w') as f:
        f.write('\\n'.join(newL))
    print('\\n'.join(newL[:100]))
    print('Customer data has been write into '.format(newf))

if __name__ == '__main__':
    import doctest
    doctest.testmod()
    main()

参考技术B #-*- coding:utf-8 -*-
import time
import datetime
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

def msg():
   f = open('test.txt','r')
   '''
       李丽丽  320382199606160123
       徐华彩  320382199606160134
       蔺小虎  320382199606160145
       葛俊  320382199606160156
   '''
   res = f.readlines()
   for i in range(len(res)):
       result = res[i].replace(' ', '').replace('\\t', '').replace('\\n', '').replace('\\r', '')
       name = result[0:-18]
       num = result[-2:-1]
       now_time = datetime.datetime.now()
       time = datetime.datetime.now().strftime('%Y%m%d')
       year = result[-12:-4]
       age = int(time[0:4]) - int(year[0:4])
       if int(time[4:]) > int(year[4:]):
           age = age
       else:
           age = age - 1
       if int(num) % 2 == 0:
           sex = "女".decode('utf-8').encode('gbk')
       else:
           sex = "男".decode('utf-8').encode('gbk')
       with open('oeder.txt', 'a') as f:
           f.write(str(name) + '    ' + str(sex) + '    ' + str(age) + '\\n')
       f.close()
   f.close

if __name__ == "__main__":
   start = time.clock()
   msg = msg()
   end = time.clock()
   print u'保存完成,共耗时:'+str(end - start)

追问

十分感谢

本回答被提问者采纳
参考技术C 这要写多少代码啊?分太少了。追问

如果满意的话再加30分

以上是关于求解一道Python编程题(求代码)的主要内容,如果未能解决你的问题,请参考以下文章

求一道python编程题

Python二级题一道,求解析

急求一道编程题

一道编程题:求逆序对的个数

关于Python编程问题

Python题目,求解!