忽略代码中的挪威文字!
尽管我做了一些简单的项目,但没有任何高级知识,我对python还是很陌生的。现在,我试图用参数等制作一个kindoff python控制台。参见底部的代码。
尽管这可行,但它使用了许多if/elif/else
语句,这让我感到非常困惑。我也尝试过用可用的命令制作字典,但据我所知,它不支持参数。
有什么办法可以做到这一点?我还尝试过将执行的代码放在另一个文件中,并使它们成为一个函数。这行得通,但是我必须特别设计代码以使用和不使用参数,巫婆是忠诚的。我也没有访问控制台的权限,因为我正在制作一本chromebook,所以我自己制作了“控制台”
帮助?
Main.py
import dice, defs
from os import system, name
consoleclear = lambda: system('cls' if name=='nt' else 'clear')
consoleclear()
while True:
commandraw = input(" ") # The square is actually an arrow
command = commandraw.upper()
commandargs = command.split()
if commandargs[0] == "DICE" or commandargs[0] == "TERNING":
print(" ")
if len(commandargs) == 2:
try:
dice.run(commandargs[1])
except KeyboardInterrupt:
print("\n-------Stoppet av bruker-------")
print(" ")
elif len(commandargs) == 1:
try:
dice.run(None)
except KeyboardInterrupt:
print("\n-------Stoppet av bruker-------")
print(" ")
elif commandargs[0] == "HELP":
if len(commandargs) == 1:
print("Tiljenglige kommandoer: 'dice', 'terning', 'help', 'stop', 'clear'.")
print("Skriv 'help <kommando>' for å se info om en spesiell kommando")
print(" ")
elif len(commandargs) == 2:
secarg = commandargs[1]
if commandargs[1] == "DICE":
print("Bruksmåte: dice <sider>")
print("Triller en terning med <sider> antall sider. Hvis <sider> ikke blir spesifisert, blir det forespurt")
print(" ")
elif commandargs[1] == "TERNING":
print("Bruksmåte: terning <sider>")
print("Triller en terning med <sider> antall sider. Hvis <sider> ikke blir spesifisert, blir det forespurt")
else:
print("Argumentet {0} ble ikke forstått. Skriv 'help' for mer info.".format(secarg))
elif command == "STOP":
break
elif command == "CLEAR":
consoleclear()
else:
print("{0} ble ikke forstått. Skriv 'help' for mer info.".format(commandraw))
print(" ")
Dice.py
def run(dice_sides):
import random, time
while True:
while True:
if dice_sides == None:
while type(dice_sides) != int or dice_sides <= 1:
try:
dice_sides = int(input("Hvor mange sider skal terningen ha? "))
if dice_sides <= 1:
print("Ikke gyldig input: Kan ikke ha 1 eller ferre sider på terningen")
continue
break
except ValueError:
print("Ikke gyldig input: Vennligst bruk et helt tall")
if dice_sides != None:
try:
dice_sides = int(dice_sides)
except ValueError:
print("Det er ikke gyldig input")
print("Skriv 'help dice' for hjelp")
return
if dice_sides <= 1:
print("Ikke gyldig input: Kan ikke ha 1 eller ferre sider på terningen")
return
elif dice_sides >= 2:
break
print("Triller...")
time.sleep(5)
print("Du fikk " + str(random.randint(1,dice_sides))+ "!")
once_more=input("En gang til? (Ja eller nei) ").upper()
if once_more=="JA":
print(" ")
continue
elif once_more=="NEI":
break
else:
print("Forsto ikke svaret")