我是python编码课的初学者。我有大部分已完成并且程序本身有效,但是我需要找出一种方法来让程序询问是否需要减法或添加问题,以及用户是否想要另一个问题。我向老师求助,他没有回复我,所以我只想弄明白并理解我到底需要做什么。
import random
x = int(input("Please enter an integer: "))
if x < 0:
x = 0
print('Negative changed to zero')
elif x == 0:
print('Zero')
elif x == 1:
print('Single')
else:
print('More')
maximum = 10 ** x;
maximum += 1
firstnum = random.randrange(1,maximum) # return an int from 1 to 100
secondnum = random.randrange(1, maximum)
compsum = firstnum + secondnum # adds the 2 random numbers together
# print (compsum) # print for troubleshooting
print("What is the sum of", firstnum, " +", secondnum, "?") # presents problem to user
added = int(input("Your answer is: ")) # gets user input
if added == compsum: # compares user input to real answer
print("You are correct!!!")
else:
print ("Sorry, you are incorrect")
答案 0 :(得分:4)
你会想做这样的事情:
def foo():
print("Doing good work...")
while True:
foo()
if input("Want to do more good work? [y/n] ").strip().lower() == 'n':
break
我已经看到这个构造(即,使用break
)比在Python中使用sentinel更频繁地使用,但是它们都可以工作。哨兵版本如下:
do_good_work = True
while do_good_work:
foo()
do_good_work = input("Want to do more good work? [y/n] ").strip().lower() != 'n'
您也希望在代码中执行比我更多的错误检查。
答案 1 :(得分:1)
要求用户输入很简单,你只需要使用python内置的input()函数。然后,将存储的答案与一些可能的结果进行比较。在你的情况下,这将工作正常:
print('Would you like to test your adding or subtracting skills?')
user_choice = input('Answer A for adding or S for subtracting: ')
if user_choice.upper() == 'A':
# ask adding question
elif user_choice.upper() == 'S':
# ask substracting question
else:
print('Sorry I did not understand your choice')
为了重复代码While
循环是您的选择,当起始条件为真时,它们将在其中重复执行语句。
while True: # Condition is always satisfied code will run forever
# put your program logic here
if input('Would you like another test? [Y/N]').upper() == 'N':
break # Break statement exits the loop
使用input()
函数的结果始终是字符串。我们在其上使用.upper()
方法将其转换为大写。如果你这样写,那么无论某人是否回答N或n,循环仍然会终止。
答案 2 :(得分:0)
如果您希望有另一个问题,请使用while循环并询问用户输入。如果您希望用户输入他是否需要添加或减少,您已经使用这些工具来请求输入。只需要询问用户字符串。