【问题标题】:Why do I have to write like this? I'm studying python [duplicate]为什么我必须这样写?我正在研究python [重复]
【发布时间】:2021-09-18 18:41:26
【问题描述】:

我正在学习python。而且我是初学者。 看书,来看看这段代码。

for num in range(101):
    print('Hello ('+str(num)+')')
    num = num + 1

这是这段代码的结果……

Hello (0)
Hello (1)
Hello (2)
.
.
.
Hello (99)
Hello (100)

下面的代码有必要吗?

print('Hello ('+str(num)+')')

我不明白为什么会有+str(num)+

【问题讨论】:

  • 你试过没有str吗?
  • 另外,你是从哪本书得到这个代码的?你需要尽快把它扔掉——先把它销毁,这样别人就看不到它了。
  • 当您遇到此类问题时,最好的办法是更改代码,看看会发生什么。
  • Python 是 强类型 语言,这意味着在混合方面存在限制,除其他外,您不得将字符串 (str) 添加到整数 (int)。另外我建议看一下字符串格式(python有很多方法可以做到这一点),它允许您将数字放在字符串中,而无需显式调用str

标签: python


【解决方案1】:

Python 在内部跟踪您的类型,这意味着您使用的类型由 Python 本身跟踪,而无需您显式声明它们。您使用print('Hello ('+str(num)+')') 正在对计算机说:“在屏幕上打印以下值”; 但是由于字符串和数字之间没有求和运算,因此您需要将数字转换为字符串,这就是您使用str(num)所做的事情。 这会根据给定的数字为您构造一个字符串;所以你正在做的实际上是让价值3 as a number变成价值'3' as a string; 那么上一行代码,当num == 3时,就相当于:

print('Hello (' + '3' + ')' )

这当然是关于字符串之间的一堆操作,现在已经被接受了; here is some more information about python's types handling.

另外,检查 Louis-Justin Tallot 的答案,它提供了一个使用 f 字符串(其中 f 代表格式)的解决方案,允许您使用 f'{variableName}' 语法,将大括号之间的值直接评估为字符串.

【讨论】:

    【解决方案2】:

    函数str()num 转换为字符串。然后,使用+ 运算符连接字符串,然后打印。

    一种现代而优雅的方法是使用f-strings

    for num in range(101):
        print(f'Hello ({num})')
        
    

    会产生相同的结果。


    旁注:您不需要执行 num = num + 1num 已经在 for 循环中自动递增。

    【讨论】:

      【解决方案3】:

      您不能将 int(或数字)添加到字符串。因此,一旦你打印了一个字符串(这里是 'Hello'),你只能给那个词添加一个字符串(或一个字符),所以你使用 str(num) 将 num 转换为一个字符串。

      num = 3
      'Hello' + str(num) => 'Hello 3'
      

      【讨论】:

        猜你喜欢
        • 2021-12-12
        • 1970-01-01
        • 2012-05-12
        • 2011-09-03
        • 1970-01-01
        • 2011-12-30
        • 2020-12-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多