乘以倍数?;“什么也不做”;创建除法或类似除法的算法

2024-10-01 15:42:24 发布

您现在位置:Python中文网/ 问答频道 /正文

还在解决啤酒问题。重新开始。我尽量不买半瓶啤酒,所以我从这里开始:

#import math

def buybeers(wallet):
    beers = 0
    for(int in xrange(0,wallet,2)) #xrange not defined
        beers += 1
        wallet -= 2
    return beers, wallet

wallet = int(input("How many wallet do you have?"))

print(buybeers(wallet))

我在想怎么花两美元买一瓶啤酒,然后把零钱还回去。你知道吗

第二次尝试,尝试查找逻辑错误:

def buybeers(wallet):
    beers = 0
    for i in range(1,wallet,3):
        beers += 1
        wallet -= 3
    return beers, wallet

wallet = int(input("How many wallet do you have?"))

print(buybeers(wallet))

当我有14美元的时候,一个问题出现了。最后我得到了-1美元和5瓶啤酒(一瓶我不该喝的啤酒,还欠我1美元)。虽然这是正确的,但一些便利店不接受标签。你知道吗

最终提交(啤酒3美元)

def buybeers(wallet):
    beers = 0
    for i in range(1,wallet,3):
        if wallet >= 3:  #if you got enough for a beer, buy one.
            beers += 1
            wallet -= 3
    #else:
    #    pass #otherwise, "do nothing"/pass (it seems this is automated).
    return beers, wallet

wallet = int(input("How many wallet do you have?"))

print(buybeers(wallet))

Tags: inyouforinputreturndefhavedo
1条回答
网友
1楼 · 发布于 2024-10-01 15:42:24

你少了几个括号,你的逻辑是错误的。假设你有$5,每瓶啤酒的价格是$2,那么你就可以有2瓶啤酒,剩下$1,但是,你的代码会给你3瓶啤酒,现在你又欠了一美元。你可以用除法和模来简化这个

def buybeers(wallet):
    beers = wallet//2
    wallet = wallet % 2

    return beers, wallet

wallet = int(input("How many wallet do you have?"))

print(buybeers(wallet)) #5 as input

(2, 1)

只是修复语法错误

def buybeers(wallet):
    beers = 0
    for i in xrange(0,wallet,2):
        beers += 1
        wallet -= 2
    return beers, wallet

wallet = int(input("How many wallet do you have?"))

print(buybeers(wallet)) #5 as input

(3, -1)

因为for-loop逻辑已关闭,所以无法提供正确的输出。你知道吗

相关问题 更多 >

    热门问题