【问题标题】:why does this have a extra space after the '-' in 'I-'?为什么在\'I-\'中的\'-\'之后有一个额外的空格?
【发布时间】:2022-11-01 21:00:22
【问题描述】:

我正在通过 zybooks 上课,这里的空白有点小故障。我不确定是什么导致了这个额外的空间,所以任何帮助都将不胜感激。

这方面的说明:

美国主要的州际公路编号为 1-99。奇数(如 5 或 95)向北/向南移动,偶数(如 10 或 90)向东/向西移动。辅助公路编号为 100-999,服务于最右边两位数字指示的主要公路。因此,I-405 服务于 I-5,而 I-290 服务于 I-90。注意:200 不是有效的辅助高速公路,因为 00 不是有效的主要高速公路编号。

给定一个高速公路编号,指出它是主要高速公路还是辅助高速公路。如果是辅助的,请说明它服务的主要公路。还要指出(主要)高速公路是北/南还是东/西。

highway_number = int(input()) 
if highway_number == 0:
    print(highway_number, 'is not a valid interstate highway number.')
if highway_number in range(1,99+1):
     if highway_number % 2 == 0:
         print('I-',highway_number,"is primary, going east/west.")
     else:
          print('I-',highway_number,"is primary, going north/south.")
else:
  served = highway_number % 100 
  if highway_number >= 1000:
    print(highway_number,'is not a valid interstate highway number.')
  if highway_number in range(99,999+1):
     if highway_number == 200:
       print(highway_number,'is not a valid interstate highway number.')
     elif highway_number % 2 == 0:
         print('I-',highway_number,'is auxiliary, serving I-','%.f,'%served,'going east/west.')
     else:
          print('I-',highway_number,'is auxiliary, serving I-','%.f,'%served, 'going north/south.')
    
             
    
             

一切正常,我只是在'I-'中的'-'之后得到一个额外的空间。

【问题讨论】:

    标签: python


    【解决方案1】:

    这就是打印的工作原理。它在每个参数之间添加空格。这就是为什么

    print(1,2,3)
    

    打印 1 2 3 而不是 123

    所以,大多数时候,你想要那种行为。

    话虽如此,你可以改变它

    print(1,2,3, sep='')
    

    打印123

    在你的情况下(还不是解决方案)

    print("I-", highway_number,"is primary, going east/west.", sep='')
    

    但是,看,现在你明白了

    I-90is primary, going east/west.
    

    所以,你看,你自己,你想要那个空间。只是不是无处不在。如果您现在添加了sep='',则必须明确添加所需的空格

    print("I-",highway_number," is primary, going east/west.", sep='')
    

    另一种方法是打印一个 f 字符串,您可以在其中插入值

    print(f"I-{highway_number} is primary, going east/west.")
    

    或者它的混合物

    print(f"I-{highway_number}", "is primary, going east/west.")
    

    或一些变体(python中有很多方法可以打印包含值的字符串)

    print("I-%d is primary, going east/west."%(highway_number,))
    
    print("I-{} is primary, going east/west.".format(highway_number))
    

    但是最快和最简单的方法是 f-string(它们也是最新的方法,这解释了为什么另一种方法存在而不那么容易和快速。加上其他方法可以做更多的事情,但与我们的情况无关)

    【讨论】:

      【解决方案2】:

      print() python 中,如果您在变量之间添加,,则默认情况下会添加一个空格。 为避免这种情况,您可以将, 更改为+(在这种情况下,将变量的类型更改为字符串)

      print("Hi",".") # Hi .
      print("Hi"+".") #Hi.
      

      或者,您也可以使用 f 字符串来轻松管理。

      a = "."
      print(f"Hi{a}") #Hi.
      print("Hi{0}".format(a)) #Hi.
      

      【讨论】:

        【解决方案3】:

        利用

        print('I-',highway_number,"is primary, going east/west.", sep="")
        

        删除每个打印项目之间添加的空间。 sep 是分隔符的缩写。 更多详情:https://docs.python.org/3/library/functions.html#print

        【讨论】:

        • 当您可以使用 f 字符串时,为什么还要使用 sep?
        • 该死的人,两者都是有效的答案。
        • 我只是想为他们提供最好的技术,而不仅仅是一种技术。
        • 两者都是有效的,但在我看来@zel 不知道f-strings,它们是比sep 更常用和实用的选择,并且可以用于不同的种类。使用, 添加空格是一种不好的做法,添加sep 会使情况变得更糟。如果一个地方需要一个空间,而另一个地方不需要空间怎么办?
        【解决方案4】:

        在这行代码中,

        print('I-',highway_number,"is primary, going east/west.")
        

        , 添加一个空格。相反,使用f-strings

        print(f"I-{highway_number} is primary, going east/west.")
        

        【讨论】:

          【解决方案5】:

          Python 可能非常令人困惑,有时最小的事情会改变它的作用。在这种情况下,您必须将 I- 旁边的逗号更改为 + 号。然后,您必须将变量highway_number 更改为字符串。例如print('I-'+ str(highway_number) + " is primary, going east/west.")

          【讨论】:

          • 请格式化您的代码。
          • 很好的解释,但不是最佳实践,请格式化您的代码。
          • 请问怎么格式化?
          • 例如,highway_number 可以用反引号写成这样,并且可以为您的解决方案添加一个新行。
          • 谢谢,现在格式化了吗?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-01-27
          • 1970-01-01
          • 2020-12-13
          • 1970-01-01
          • 2013-04-25
          • 1970-01-01
          • 2015-03-28
          相关资源
          最近更新 更多