【问题标题】:Python3.2 loopsPython3.2 循环
【发布时间】:2013-10-13 12:02:12
【问题描述】:
# generate a random number between 1 and 99 sgenrand.randint(1,99) # your code goes here 
print("Enter coins that add up to 81 cents, one per line.") 
#promp the user to start entering coin values that add up to 81  
coin = (sgenrand.randint(1,99)) 
number1 = ("Enter first coin: ") 
sum = 0   
number1 = eval(input("Enter first coin: ")) 
while number1 != coin:   
    if number1 != coin: 
    number1 = eval(input("Enter next coin: "))

我陷入了这个 while 循环。我希望用户可以在没有答案的情况下按回车并跳出循环。在他爆发后,计算他之前添加的数字的总和,如果总和不是81。告诉用户他没有达到目标值,告诉他他达到了​​什么值并询问他是否要重新开始!

【问题讨论】:

  • 使用eval(input()) 被认为是非常危险并且是不好的技术。如果这是本课程的教授建议的,也许这不是你应该向谁学习 python。
  • 评价?好的,这里慢一点。你的逻辑是......混乱。您有流控制,其中while number1 != coin 在真实条件下紧跟if number1 != coin,根据定义,if number1 != coin 必须为真。喘口气,在网上搜索一下 stackoverflow,然后再试一次。
  • 我打算发布一个关于如何完成这项工作的答案,但是当我开始真正查看代码时,我意识到我不知道发生了什么。 randint 电话的意义何在?请编辑问题以更清楚地说明发生了什么。
  • @SethMorton 这是课程教授的建议,那么在这种情况下我应该使用什么功能? randint 是生成 1,99 之间的随机数
  • 如果你想要一个int,你应该使用int函数。你应该问你教授为什么eval 被认为是危险的。如果他们不知道,我怀疑你会在那堂课中学习真正的 Python 编程。

标签: python loops while-loop


【解决方案1】:

我喜欢做作业,我真的很喜欢:

import random as sgenrand

def oneRound():
    target = sgenrand.randint(1, 99)
    print('Enter coins that add up to {} cents, one per line.'.format(target))
    total = int(input('Enter first coin: '))
    while True:
        s = input('Enter next coin: ')
        if not s: break
        total += int(s)
    if total == target:
        print('Well done.')
        return True
    print('You reached {}.'.format(total))
    return input('Do you want to start over? [y/*] ') != 'y'

while not oneRound(): pass

【讨论】:

  • 哦,原来 81 是一条红鲱鱼!它应该是从randint返回的数字
猜你喜欢
  • 2012-10-11
  • 2012-05-20
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
相关资源
最近更新 更多