Python 3.x 学习python——不能';我不能算出random.randint
我正在学习python atm,并从中做了一个练习-- 指示用户选择1到100之间的任意数字,并在七次尝试中正确猜测。在每次猜测之后,用户必须知道他们的数字是高于、低于还是等于您的猜测 我编写的代码,但与解决方案不匹配,是这样的--Python 3.x 学习python——不能';我不能算出random.randint,python-3.x,Python 3.x,我正在学习python atm,并从中做了一个练习-- 指示用户选择1到100之间的任意数字,并在七次尝试中正确猜测。在每次猜测之后,用户必须知道他们的数字是高于、低于还是等于您的猜测 我编写的代码,但与解决方案不匹配,是这样的-- 随机导入 pick=int(输入('number')) 计数=0 计数时,这里的错误是使用=。这些值分别表示小于或等于和大于或等于。因此,您的代码永远不会到达elif number==pick:行,因为前两条语句中的一条始终为true。很明显,如果number==p
随机导入
pick=int(输入('number'))
计数=0
计数时,这里的错误是使用=
。这些值分别表示小于或等于
和大于或等于
。因此,您的代码永远不会到达elif number==pick:
行,因为前两条语句中的一条始终为true。很明显,如果number==pick
,那么第一条语句将为true,并且程序将提示用户如果更高,则按enter键
答案是什么?更改
。这样,测试只适用于小于
和大于
的情况。这里的错误在于使用=
。这些值分别表示小于或等于
和大于或等于
。因此,您的代码永远不会到达elif number==pick:
行,因为前两条语句中的一条始终为true。很明显,如果number==pick
,那么第一条语句将为true,并且程序将提示用户如果更高,则按enter键
答案是什么?更改
。这样,测试只针对小于
和大于
的学生。下面是我根据您发布的问题文本所做的快速重写:
import random
input("Think of a number from 1 to 10, then press enter. Don't tell me, I'll guess it.")
low = 1
high = 10
done = False
for guesses in range(7):
number = random.randint(low, high)
print("I'm guessing", number)
happy = False
while not happy:
resp = input('Enter H if your number is higher, L if lower or E for equal: ')[0].upper()
if resp == 'E':
if guesses:
plural = 'es'
else:
plural = ''
print('Yay! I got it in {} guess{}.'.format(guesses+1, plural))
happy = True
done = True
break
elif resp == 'H':
happy = True
low = number + 1
elif resp == 'L':
happy = True
high = number -1
else:
print("That wasn't a valid response.")
if done:
break
print('end')
我所做的不同:
- 程序没有把你的号码作为输入(它毕竟是在试图猜测)
- 我将low&high设置为初始范围,并设置一个done标志,因为我需要在成功时打破两个级别的循环
- 下一步我猜是基于低-高范围
- 要求H、L或E来表示我的猜测落在哪里
- 根据用户告诉我的内容修改范围
主要区别在于,这段代码有点智能地猜测数字。(尽管有7次猜测可能仍然失败。)一个更智能的算法是每次猜测中点,而不是随机猜测。好吧,这里是我根据你发布的问题文本快速重写的:
import random
input("Think of a number from 1 to 10, then press enter. Don't tell me, I'll guess it.")
low = 1
high = 10
done = False
for guesses in range(7):
number = random.randint(low, high)
print("I'm guessing", number)
happy = False
while not happy:
resp = input('Enter H if your number is higher, L if lower or E for equal: ')[0].upper()
if resp == 'E':
if guesses:
plural = 'es'
else:
plural = ''
print('Yay! I got it in {} guess{}.'.format(guesses+1, plural))
happy = True
done = True
break
elif resp == 'H':
happy = True
low = number + 1
elif resp == 'L':
happy = True
high = number -1
else:
print("That wasn't a valid response.")
if done:
break
print('end')
我所做的不同:
- 程序没有把你的号码作为输入(它毕竟是在试图猜测)
- 我将low&high设置为初始范围,并设置一个done标志,因为我需要在成功时打破两个级别的循环
- 下一步我猜是基于低-高范围
- 要求H、L或E来表示我的猜测落在哪里
- 根据用户告诉我的内容修改范围
主要区别在于,这段代码有点智能地猜测数字。(虽然有7次猜测可能仍然失败。)更智能的算法是每次猜测中点,而不是随机猜测。代码的缩进似乎被破坏了。请对照您的原始代码进行检查。代码的缩进似乎已损坏。请对照您的原始代码进行检查。澄清--14至17行('如果猜测:');这些是做什么用的?谢谢嘿,对不起,这是在处理我的一个讨厌的问题。多元挑战的程序。。。它所做的是,如果猜测是非零的(除了第一次通过循环外,它都处于启用状态),它会将“es”赋值给字符串复数形式,因此输出为“Yay!”!我猜了三次。当第一次通过循环时,它会输出“耶!我猜了一次。”澄清——第14行到第17行(“如果猜:”);这些是做什么的?谢谢!嘿,对不起,这是在处理我的一个讨厌的问题。程序是复数挑战的…它所做的是如果猜是非零的(除了第一次通过循环外,它都处于启用状态),它将“es”赋值给字符串复数形式,因此输出为“耶!我猜了3次才得到”。而在第一次通过循环时,它将输出“耶!我猜了1次。”