簡體   English   中英

繼續提示用戶輸入,直到輸入 0

[英]Continue prompting user input until 0 is key in

我的代碼有問題。 不知道如何修復它。 我的程序反復提示要訪問的超市過道號碼。 當輸入 0 時,輸入過程將終止。 然后程序根據放置購物籃的最佳位置和我需要從中挑選物品的過道數來計算最小距離。 然后程序顯示最小距離。 以下是我的代碼:

totalAisles = int(input("Enter the number of aisles in supermarket: "))
visitAisle = int(input("Enter the aisle number to visit: "))
if visitAisle == 0:
    print("Not visiting any aisle")
else:
    aisle = []
    while True:
        visitAisle = int(input("Enter the aisle number to visit: "))
        if visitAisle == 0:
            break
        else:
            for i in range(totalAisles):
                visitAisle = int(input("Enter the aisle number to visit: "))
                aisle.append(visitAisle)
                #to find the best aisle to place the basket 
                highestAisle = max(aisle)
                lowestAisle = min(aisle)
                basket = round(highestAisle + lowestAisle) / 2
                minimumDistance += abs(basket - visitAisle) * 2
            print(f"The minimum distance is {minimumDistance} units")

示例運行

運行 1 輸入超市過道數:100

輸入要參觀的過道號:1

輸入要參觀的過道號:8

輸入要參觀的過道號:5

輸入要參觀的過道號:4

輸入要參觀的過道號:10

輸入要參觀的過道號:0

最小距離為 26 個單位

運行 2

輸入超市過道數:100

輸入要參觀的過道號:1

輸入要參觀的過道號:0

最小距離為 0 個單位

運行 3

輸入超市過道數:100

輸入要參觀的過道號:0

不參觀任何過道

這是我建議您的解決方法

visitAisle = int(input("Enter the aisle number to visit: "))
if visitAisle == 0:
    print("Not visiting any aisle")
else:
    aisle = []
    while True:
        visitAisle = int(input("Enter the aisle number to visit: "))
        if visitAisle == 0:
            break
        else:
            for i in range(totalAisles):
                visitAisle = int(input("Enter the aisle number to visit: "))
                if visitAisle == 0:
                    break
                aisle.append(visitAisle)
                #to find the best aisle to place the basket 
                highestAisle = max(aisle)
                lowestAisle = min(aisle)
                basket = round(highestAisle + lowestAisle) / 2
                minimumDistance += abs(basket - visitAisle) * 2
        if visitAisle == 0:
                    break
    print("The minimum distance is ", minimumDistance)

我修改了程序的幾行,但只是一點點。 現在我希望你能理解問題的原因。

雖然我不確定 output 是否正是您正在尋找的,但這是一個替代方案。

totalAisles = int(input("Enter the number of aisles in supermarket: "))
enterStore = (input("Do you want to enter the store (yes/no)?: "))
if enterStore == "no":
    print("Not visiting the supermarket today!")
minimumDistance = 0
aisle = []
while enterStore != "no":
    visitAisle = int(input("Enter the aisle number to visit: "))
    if visitAisle == 0:
        break
    else:
        aisle.append(visitAisle)
        highestAisle = max(aisle)
        lowestAisle = min(aisle)
        basket = int(round(highestAisle + lowestAisle) / 2)
        minimumDistance += abs(basket - visitAisle) * 2

print(f"The minimum distance is {minimumDistance} units, ideal place for basket is {basket}")

更新這是一種更簡化的方法。 我還確保用戶不會輸入重復的過道編號,並且不會比商店中的過道多。 最重要的是,計算步驟大大簡化。

totalAisles = int(input("Enter the number of aisles in supermarket: "))
aisle = []
visitAisle = None

while len(aisle) < totalAisles:
    visitAisle = int(input("Enter the aisle number to visit: "))
    if visitAisle == 0:
        if aisle:
            break
        else:
            print("Not visiting any aisle")
            break
    if visitAisle not in aisle and visitAisle != 0:
        aisle.append(visitAisle)
    else:
        print("You already entered that aisle number. Pick another one.")

#to find the best aisle to place the basket
if aisle:
    highestAisle = max(aisle)
    lowestAisle = min(aisle)
    basket = (highestAisle + lowestAisle) //2

    #traveling back and forth from the basket to each isle
    minimumDistance = 0
    for visitAisle in aisle:
        minimumDistance += abs(basket - visitAisle) * 2
    print(f"\nThe minimum distance is {minimumDistance} units if you park the cart at aisle {basket}")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM