【问题标题】:How to escape from loop Python如何从循环 Python 中逃脱
【发布时间】:2019-10-22 02:19:40
【问题描述】:

我需要写一个转换器(摄氏度到开尔文,开尔文到摄氏度......)。用户写:a - 度数(例如0),b - 例如:开尔文,c - 例如:摄氏度。

运动: 输入格式 有几条输入线。 每行由三个单词组成。 第一个词表示起始温度。 第二个字表示起始规模。 第三个字表示目标规模。

约束 可能的尺度是:{“开尔文”、“摄氏”、“华氏”}。温度高达1000度。每当初始温度低于绝对零时,输出“NO”。 输出中的数字应保持精确到小数点后第二位。

输出格式 对于每个输入行,一个数字是计算出的温度(精确到小数点后两位)或单词“NO”。

这是给黑客的

错误:

Traceback (most recent call last):
  File "C:/Users...", line 4, in <module>
    a, b, c = input().split()
ValueError: not enough values to unpack (expected 3, got 0)

代码:

while True:
    a, b, c = input().split()
    if int(a) < 0:
        print('NO')
    else:

当用户停止写入时退出循环。

【问题讨论】:

  • while True: a, b, c = input().split() if int(a)
  • 您需要在程序化术语中指定“当用户停止写入时”的含义。然后测试该条件。由于您没有告诉我们这意味着什么,我们无法“更正”您的代码。
  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议遵循帮助文档中的发布指南。 On topichow to ask 和 ...the perfect question 在此处申请。我们的迫切需要是您在帖子中充分描述您的问题;不在评论中,不在答案中,不在没有解释的情况下使用非现场链接。

标签: python loops while-loop


【解决方案1】:

猜测一种可能的解决方案:

a, b, c = input().split()

此代码在该行中恰好需要三个非空白字段。你可以测试一下;

user_stuff = input().split()
if len(user_stuff) != 3:
    break
a, b, c = user_stuff

您的链接意味着您正在从通过管道传输到stdin 的文件中读取,而不是从实时用户输入中读取。在这种情况下,您必须将sys.stdin 视为一个文件:

from sys import stdin

for line in stdin:
    a, b, c = line.split()
    ...

【讨论】:

  • 它可以工作,但link 我有同样的问题,当我尝试用 ''try/except'' 来做时
猜你喜欢
  • 2012-05-07
  • 2016-03-11
  • 1970-01-01
  • 2020-08-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2021-05-01
  • 2010-09-12
相关资源
最近更新 更多