问题描述
尝试运行 case (PlayerState.CarryingRaw):
//Debug.Log("Carrying" + pickedUpRawItems.Count + "items");
//Debug.Log(pos.x +","+ pos.y);
hits = Physics2D.RaycastAll(transform.position,new Vector2(pos.x-5,pos.y),20,8);
Debug.DrawLine(transform.position,new Vector2(pos.x - 5,Color.red,2);
for (int i = 0; i < hits.Length; i++)
{
Debug.Log(hits[i].transform.name);
}
//Debug.Log("Raycasted" + hits.Length + "Objects");
for (int i = 0; i < hits.Length; i++)
{
{
if (hits[i].transform.tag == pickedUpRawItems[pickedUpRawItems.Count - 1].transform.tag)
{
Debug.Log(hits[i].transform.tag);
Debug.Log(pickedUpRawItems[pickedUpRawItems.Count - 1].transform.tag);
hits[i].transform.GetComponent<BoxCollider2D>().enabled = false;
hits[i].transform.GetComponent<ItemScript>().currentState = ItemScript.ObjectState.PickedUp;
hits[i].transform.localScale = sizeChange;
pickedUpRawItems.Add(hit.transform.gameObject);
}
}
}
break;
case (PlayerState.Working):
break;
case (PlayerState.Free):
Debug.Log("youhou + State.Free");
hit = Physics2D.Raycast(transform.position,pos.y));
if (hit)
{
hit.transform.GetComponent<BoxCollider2D>().enabled = false;
Debug.Log("youhou + hit.Free");
hit.transform.GetComponent<ItemScript>().currentState = ItemScript.ObjectState.PickedUp;
hit.transform.localScale = sizeChange;
pickedUpRawItems.Add(hit.transform.gameObject);
currentState = PlayerState.CarryingRaw;
}
break;
循环直到输入有效:
while
如果输入除数字以外的任何内容,则需要继续循环,但循环到达 while True:
try:
print('open')
num = int(input("Enter number:"))
print(num)
except ValueError:
print('Error:"Please enter number only"')
continue #this continue is not working,the loop runs and break at finally
finally:
print('close')
break
和 finally
。
解决方法
finally
将总是在 try-except 之后运行。您需要 else
,它仅在 try 块不引发异常时运行。
顺便说一下,尽量减少 try 块中的代码,以避免误报。
while True:
inp = input("Enter number: ")
try:
num = int(inp)
except ValueError:
print('Error: Please enter number only')
continue
else:
print(num)
break
print('This will never print') # Added just for demo
试运行:
Enter number: f
Error: Please enter number only
Enter number: 15
15
请注意,您的示例中实际上并不需要 continue
,因此我在循环底部添加了一个演示 print()
。
您只需删除 import { Component } from '@angular/core';
@Component({
selector: 'app-root',templateUrl: './app.component.html',styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'angular-example';
}
语句即可实现您想要的效果。
finally:
验证 int() 后需要做的任何事情都应该在 while True:
try:
print('open')
num = int(input("Enter number:"))
print(num)
break # stop the loop when int() returns a value
except ValueError:
print('Error:"Please enter number only"')
continue
结构之外