从For循环中获取所需的输出

时间:2015-10-04 06:41:23

标签: python for-loop

我有一个程序代码可以操作用户输入的某些输入。

我不确定如何只获取x个输出(x由程序开头的用户指定)。

numOfFloats = int(input("Enter the number of floating point inputs: "))
numOfInts = int(input("Enter the number of integer inputs: "))
numOfStrings = int(input("Enter the number of string inputs: "))

for num in range(numOfStrings,0,-1):
    print()

    ffloats = float(input("Enter a real number: "))
    iints = int(input("Enter an integer: "))
    string = input("Enter a string: ")

    print()

    print("float: ", ffloats**(1/10))
    print("int: ", iints**10)
    print("string: ", (string + string))

我每次都得到所有三个请求,即使我在开头指定我只想要1个浮点数,2个整数和3个字符串。我被要求提供3个浮点数,3个整数和3个字符串。我确实意识到我的代码是做什么的,但我不知道如何将它带到我想要的地方。我觉得for循环条件有问题。

感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

程序完全按照你的要求去做:给定字符串的数量 - 3 - 得到许多int-float-string集。您从未使用其他两个数量来控制其循环。你需要三个独立的循环;这是一个字符串,删除了所有的int和float。

numOfStrings = int(input("Enter the number of string inputs: "))

for num in range(numOfStrings,0,-1):
    print()
    string = input("Enter a string: ")
    print()
    print("string: ", (string + string))

现在对于整数和花车也是如此,我想你会得到你想要的东西。

是的,你可以在一个循环中完成它,但它不够优雅。您必须找到所有三个数字的最大值,并将其用作循环的上限。在循环中,依次针对int,float和string限制检查“num”。

此代码的可读性较差,维护较难且速度较慢。你有针对循环的个人仇杀吗? : - )

答案 1 :(得分:0)

{
"FILES_ROOT":          "",
"RETURN_URL_PREFIX":   "https://www.strategic-options.com",
"SESSION_PATH_KEY":    "",
"THUMBS_VIEW_WIDTH":   "140",
"THUMBS_VIEW_HEIGHT":  "120",
"PREVIEW_THUMB_WIDTH": "100",
"PREVIEW_THUMB_HEIGHT":"100",
"MAX_IMAGE_WIDTH":     "1000",
"MAX_IMAGE_HEIGHT":    "1000",
"INTEGRATION":         "ckeditor",
"DIRLIST":             "php/dirtree.php",
"CREATEDIR":           "php/createdir.php",
"DELETEDIR":           "php/deletedir.php",
"MOVEDIR":             "php/movedir.php",
"COPYDIR":             "php/copydir.php",
"RENAMEDIR":           "php/renamedir.php",
"FILESLIST":           "php/fileslist.php",
"UPLOAD":              "php/upload.php",
"DOWNLOAD":            "php/download.php",
"DOWNLOADDIR":         "php/downloaddir.php",
"DELETEFILE":          "php/deletefile.php",
"MOVEFILE":            "php/movefile.php",
"COPYFILE":            "php/copyfile.php",
"RENAMEFILE":          "php/renamefile.php",
"GENERATETHUMB":       "php/thumb.php",
"DEFAULTVIEW":         "list",
"FORBIDDEN_UPLOADS":   "zip js jsp jsb mhtml mht xhtml xht php phtml php3 php4 php5 phps shtml jhtml pl sh py cgi exe application gadget hta cpl msc jar vb jse ws wsf wsc wsh ps1 ps2 psc1 psc2 msh msh1 msh2 inf reg scf msp scr dll msi vbs bat com pif cmd vxd cpl htpasswd htaccess",
"ALLOWED_UPLOADS":     "",
"FILEPERMISSIONS":     "0644",
"DIRPERMISSIONS":      "0755",
"LANG":                "auto",
"DATEFORMAT":          "dd/MM/yyyy HH:mm",
"OPEN_LAST_DIR":       "yes"
}

如果你想要它们,那么你必须:

ffloats = []
for num in range(numOfFloats):
    ffloats.append(float(input("\nEnter a real number: "))

iints = []
for num in range(numOfFloats):
    iints.append(int(input("\nEnter an integer: "))

sstrings = []
for num in range(numOfFloats):
    sstrings.append(input("\nEnter a real number: ")

print("Floats:", [f**(1/10) for f in ffloats])
print("Ints:", [i**10 for i in iints])
print("Strings:", [s + s for s in sstrings])

答案 2 :(得分:0)

如果你真的只想要一个循环,那么我建议你使用while循环而不是for循环,因为你需要保持循环直到输入所有值。

numOfFloats = int(input("Enter the number of floating point inputs: "))
numOfInts = int(input("Enter the number of integer inputs: "))
numOfStrings = int(input("Enter the number of string inputs: "))

while numOfFloats + numOfInts + numOfStrings:
    print()

    if numOfFloats:
        ffloats = float(input("Enter a real number: "))

    if numOfInts:
        iints = int(input("Enter an integer: "))

    if numOfStrings:
        string = input("Enter a string: ")

    print()

    if numOfFloats:
        print("float: ", ffloats**(1/10))
        numOfFloats -= 1

    if numOfInts:
        print("int: ", iints**10)
        numOfInts -= 1

    if numOfStrings:
        print("string: ", (string + string))
        numOfStrings -= 1

例如:

Enter the number of floating point inputs: 1
Enter the number of integer inputs: 2
Enter the number of string inputs: 3

Enter a real number: 1.5
Enter an integer: 2
Enter a string: three

float:  1.0413797439924106
int:  1024
string:  threethree

Enter an integer: 2
Enter a string: hello

int:  1024
string:  hellohello

Enter a string: world

string:  worldworld