请教一个python问题

软件和网站开发以及相关技术探讨
回复
vicky87126
帖子: 6
注册时间: 2010-11-29 19:24

请教一个python问题

#1

帖子 vicky87126 » 2010-11-30 21:09

if self.__hour <12:
standardTime+=" AM"
else:
standardTime+=" PM"

上面这段代码,不知道为什么if那半句能够执行,else这半句执行的时候会报错,如下:
File "Time3.py", line 76, in printStandard
standardTime+=" PM"
TypeError: bad operand type for unary +: 'str'
请高人指点一下,非常感谢!
lubcat
帖子: 2061
注册时间: 2010-09-27 12:59

Re: 请教一个python问题

#3

帖子 lubcat » 2010-11-30 21:28

如果是按12小时记的话
小于12时 显示xxx AM 显示例如:10AM
大于12时 显示xxx PM 显示例如:13PM? 是不是有点不合适呢 。。 12小时制应显示 1PM

一点点小想法。

如果误解lz 请见谅
生活里,有很多转瞬即逝,像在车站的告别,刚刚还相互拥抱,转眼已各自天涯。很多时候,你不懂,我也不懂,就这样,说着说着就变了,听着听着就倦了,看着看着就厌了,跟着跟着就慢了,走着走着就散了,爱着爱着就淡了,想着想着就算了。
vicky87126
帖子: 6
注册时间: 2010-11-29 19:24

Re: 请教一个python问题

#4

帖子 vicky87126 » 2010-11-30 22:19

zkwlx 写了:把上下文贴出来

上文就是一个转换标准时间的代码

代码: 全选

standardTime=""

if self.__hour==0 or self.__hour==12:
    standardTime+="12:"
else:
    standardTime+="%.2d:" % (self.__hour%12)

standardTime+="%.2d:%.2d" %(self.__minute,self.__second)

if self.__hour <12:
    standardTime+="AM"
else:
    standardTime+="PM"
这些都写在printStandard(self)里,其他的变量也都在class中进行了定义,上下两句道理是一样的,所以就没明白下边一句怎么会出错,望高手分析解答~~~
PS:缩进神马的都没有问题,只是这里显示不出来
头像
millenniumdark
论坛版主
帖子: 4159
注册时间: 2005-07-02 14:41
系统: Ubuntu 14.04 (Kylin)
联系:

Re: 请教一个python问题

#5

帖子 millenniumdark » 2010-12-01 22:00

问题应该出在前面,把整个脚本贴出来。
vicky87126
帖子: 6
注册时间: 2010-11-29 19:24

Re: 请教一个python问题

#6

帖子 vicky87126 » 2010-12-02 17:40

代码: 全选

# Class Time with default constructors

class Time:
   """Class Time with default constructors"""

   def __init__(self, hour=0, minute=0, second=0):
      """Time constructors initializes each data member to zero"""

      self.setTime(hour, minute, second)

   def setTime(self, hour, minute, second):
      """Set values of hour,minute and second"""

      self.setHour(hour)
      self.setMinute(minute)
      self.setSecond(second)

   def setHour(self, hour):
      """Set hour value"""

      if 0<= hour <24:
         self.__hour=hour
      else:
         raise ValueError, "Invalid hour value"

   def setMinute(self, minute):
      """Set minute value"""
      if 0<= minute <60:
         self.__minute=minute
      else:
         raise ValueError, "Invalid minute value"

   def setSecond(self, second):
      """Set second value"""

      if 0<= second < 60:
         self.__second=second
      else:
         raise ValueError, "Invalid second value"

   def getHour(self):
      """Get hour value"""
    
      return self.__hour

   def getMinute(self):
      """Get minute value"""

      return self.__minute

   def getSecond(self):
      """Get second value"""

      return self.__second

   def printMilitary(self):
      """Print Time object in military format"""
 
      print "%.2d:%.2d:%.2d" % \
         (self.__hour, self.__minute, self.__second),

   def printStandard(self):
      """Print Time object in standard format"""

      standardTime=""
      if self.__hour ==0 or self.__hour ==12:
         standardTime+="12:"
      else:
         standardTime+="%d:" % (self.__hour %12)

      standardTime+="%.2d:%.2d" % (self.__minute,self.__second)

      if self.__hour <12:
         standardTime+="  AM"
      else:
         standardTime+="  PM"
      
      print standardTime,

这是全部
上次由 vicky87126 在 2010-12-02 18:37,总共编辑 1 次。
vicky87126
帖子: 6
注册时间: 2010-11-29 19:24

Re: 请教一个python问题

#7

帖子 vicky87126 » 2010-12-02 18:31

刚才重启了又可以了,只是不知道这个是为什么阿?
vicky87126
帖子: 6
注册时间: 2010-11-29 19:24

Re: 请教一个python问题

#8

帖子 vicky87126 » 2010-12-02 18:39

另外,写的这个脚本怎么不能运行?

代码: 全选

#Demonstrating defalut constructor method for class Time.

from Time3 import Time

def printTimeValues( timeToPrint ):
    timeToPrint.printMilitary()
    print
    timeToPrint.printStandard()
    print

time1=Time()
time2=Time(2)
time3=Time(21,34)
time4=Time(12,25,42)

print "Constrcted with:"

print "\nall arguments defaulted:"
printTimeValues(time1)

print"\nhour specified; minute and second defaulted"
printTimeValues(time2)

print"\nhour and minute specified; second defaulted"
printTimeValue(time3)

print"\nall specified"
printTimeValue(time4)

from: can't read /var/mail/Time3
./testTime3.py: line 5: 在未预料的“(”附近出现语法错误
./testTime3.py: line 5: `def printTimeValues( timeToPrint ):'

这个脚本和Time3是放在同一个文件夹中的。
我是菜鸟~~~
vicky87126
帖子: 6
注册时间: 2010-11-29 19:24

Re: 请教一个python问题

#9

帖子 vicky87126 » 2010-12-02 19:09

已经解决了,我真的太菜了 :em06
回复