【问题标题】:Splitting input into two with for-loop使用for循环将输入分成两部分
【发布时间】:2012-09-05 15:49:29
【问题描述】:

这就是我陷入困境的地方,试图通过网络课程学习 Python。

编写一个程序,接受形式为 «number1»+«number2» 的单个输入行,其中这两个都表示正整数,并输出两个数字的总和。例如,在输入 5+12 上,输出应为 17。

我们不应该使用 split() 或任何导入。

我认为解决方案是使用 Character 及其值为 43 的子字符串,但我不确定。我唯一确定的是,解决方案很简单,不需要花哨的功能或导入。

这是我认为可能接近解决方案的方法

S = input()
for position in range(0,len(S):
      #code for substrings 5 to number1, and 12 to number2
result = int(number1)+int(number2)
print(result)

【问题讨论】:

标签: python-3.x


【解决方案1】:

使用str.partition:

line = raw_input()
num1, _, num2 = line.partition('+')
print(int(num1) + int(num2))

如果您不能使用str.partition 并想使用for 循环,那么enumerate 应该会有所帮助:

for i, c in enumerate(line):
    if c == '+':
        # what goes here?

【讨论】:

  • .. 在技术上是正确的,但如果 OP 不应该使用 split(),那么我不认为使用 partition() 是相当板球。但是,如果没有看到描述规则的问题中未引用的部分,很难说,而且问题标题似乎确实提到了一个 for 循环。
  • 是的,如果可以避免的话,我们必须使用 for-loop 并且不使用 partition()
  • 这个问题没有不完善的部分。在那门课程中,我们没有深入研究函数或导入。该课程非常基础,所有解决方案都应尽可能简单。
  • 感谢您的帮助,但我认为我也不能使用 enum()。正如问题所说,在 for 循环的帮助下,将以 (5+12) 形式给出的输入字符串拆分为两个子字符串 number1=5, number2=12。那是我一个人做不到的。然后我可以将其更改为整数并自行添加。
  • @Aenohe 代替 enumerate 试试 range(len(line))
【解决方案2】:

回答

S = input()
for position in range(0, len(S)):
plus=S[position]
    if (plus!="+"):
      continue
    number1=int(S[0:position])
    number2=int(S[position+1:len(S)])
    print(number1+number2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多